12

【git】语法速查表

 3 years ago
source link: https://www.guofei.site/2017/02/10/git.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

【git】语法速查表

2017年02月10日

Author: Guofei

文章归类: 1-1-算法平台 ,文章编号: 103


版权声明:本文作者是郭飞。转载随意,但需要标明原文链接,并通知本人
原文链接:https://www.guofei.site/2017/02/10/git.html

Edit

1. 安装git

step1:下载git
https://git-for-windows.github.io/
step1.5:安装,选项看着选
step2
选择use Git from the Windows Command Prompt
(自动加入Path,这样就可以在cmd里面用了)
step3
Configuring the line ending conversion:选择Checkout Windows-style,commit Unix-style line ending.

2. 初始设置

这部分的操作都在Git Bash下

2.1 设置信息

2.1.1 设置个人信息

$git config --global user.name "Guofei"
$git config --global user.email "[email protected]"

这样,”~/.config”中的name和email就被改了(也可以直接编辑这个文件) 注意,这两个信息会一起上传到github

2.1.2 查看配置

git config --lis

2.1.3 解决中文乱码

git config --global core.quotepath false

2.2 设置SSH

step1 生成公钥和秘钥
(Git Bash下,而不是CMD下)

$ssh-keygen -t  rsa -C "[email protected]"#生成秘钥

会提示输入密码(本地仓库的密码)

id_rsa文件是私有秘钥 id_rsa.pub文件是公开秘钥

step2 去官网导入公钥 去GitHub官网上,把github_rsa.pub文件中的内容添加到SSH中

会受到一个提醒邮件 现在可以用手中的私人秘钥与GitHub进行通讯了

查看公钥内容:

$cat ~/.ssh/id_rsa.pub

step3 看是否成功添加公钥

$ssh -T [email protected] # 测试是否成功

2.2.1 免输密码

git config credential.helper store

下次push要输入一次密码,之后都不用了

这条命令其实是在 .config 这个文件中增加下面两行

[credential]
helper=store

2.3 新建仓库

2.3.1 去官网新建仓库

点击new repository

  • Initialize this repository with a README这个选项可以自动生成readme,readme中的内容会自动显示到repository的首页中
  • Add.gitignore 用来存放不需要进行版本管理的文件(例如框架等)
  • Add a license许可协议

2.3.2 在本地建仓库

git init可以初始化本地仓库:

mkdir git-dir
cd git-dir
git init

git status: 显示仓库状态 git log: 显示log

  • 简略显示log:git log --pretty=short
  • 只显示指定文件或目录:git log readme.md
  • 显示文件的改动:git log -p
  • 显示指定文件的改动:git log -p readme.md
  • 出图git log --graph git diff:显示更改前后的差别(不用add也可以显示)

3. push 和 pull

3.1 把仓库clone到本地

git clone [email protected]:guofei9987/hello-world.git

3.2 push

  • 新建的文件是untracked files
  • 执行add语句后,状态变为 to be committed

step1: add

git add filename
git add -A #全部添加

step2: commit

git commit

在弹出的txt中填入这次commit的相关信息
填入信息的格式约定:
第一行:一句话概括更改的内容
第二行:空
第三行:记录更改的原因和详细内容

step2 commit
还有一种形式,这种不会弹出txt

git commit -m "First commit"

step3 push
成功后,GitHub上的仓库就会被更新

git push
git push origin feature-A # 把feature-A这个分支push到GitHub

# 语法如下:
git push <远程主机名> <本地分支名>:<远程分支名>

git push origin master # 将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建

git push origin :master # 删除远程分支(推送空本地分支到远程分支),等同于 git push origin --delete master

4. 分支相关

4.1 查看分支

git branch # 列出本地的分支
git branch -r # 列出远端分支
git branch -a # 列出所有分支
git branch -v # 查看各个分支最后一个提交对象的信息
git branch --merge # 查看已经合并到当前分支的分支
git branch --no-merge # 查看未合并到当前分支的分支

4.2 创建分支

git branch feature-A # 创建一个名为feature-A的分支
git checkout feature-A # 切换到feature-A分支
git checkout -b feature-A # 创建并切换到feature-A分支
git checkout -b feature-A dev # 基于dev新建feature分支

git clone -b branch_name [email protected]:guofei9987/guofei9987.github.io.git # -b 克隆指定的分支

4.3 删除分支

git branch -d test # 删除test分支
git branch -D test # 强制删除test分支
git push origin --delete develop # 删除远程分支

4.4 合并分支

git merge test # 把test分支合并到当前分支
git merge --no-ff feature-A

5. 回溯历史版本

git reset --hard 75a8a671ec564e031eeec9fadbcd3a51daefe3c9

整个回到了历史版本了

查看所有线的log

git reflog

远端

  • 添加到远程仓库
    git remote add origin [email protected]:guofei9987/git17.git # 这里的 origin 是一个别名,如果有多个远端,可以有多个别名
    git remote -v # 查看已经指定的远端服务
    git remote remove # 删除指定的远端服务
    
  • 推送到远程仓库
    git push -u origin master:master # -u是--set-upstream的缩写,用来指定推送的服务器仓库
    # 冒号前面的master是本地分支名,冒号后面的master是远程分支名,如果本地分支master已经和远程分支master建立过关联,则冒号以及后面的部分可以省略。
    
  • 从远程仓库获取(在新文件夹下)
    git clone [email protected]:guofei9987/scikit-opt.git
    git clone -b master [email protected]:guofei9987/scikit-opt.git # 获取指定分支
    
  • pull 从远程仓库取回代码
    git pull origin master

tag

git tag # 列出现有标签
git tag v0.1 # 新建标签
git tag -a v0.1 -m 'my conversion 1.2' # 新建带注释的标签

git checkout tagename # 切换到标签
git push origin v1.5 # 推送分支到源上
git push origin --tags # 一次性推送所有分支
git tag -d v0.1 # 删除标签
git push origin :refs/tags/v0.1 #删除远程标签

实用工具

在github上比较两个branch的不同

https://github.com/guofei9987/plans/compare/master...master1

在github上比较同一分支不同时间内的差别

https://github.com/guofei9987/plans/compare/master@{7.days.ago}...master

在github上比较指定日期之间的差别

https://github.com/guofei9987/plans/compare/master@{2017-01-24}...master@{2017-02-04}
  • github pages https://pages.github.com/
  • github jobs

比较图片的变动历史(与比较代码的变动历史操作一样)

Pull Request (PR)

如果想参与别人的项目

  1. 在github.com上fork到自己仓库
  2. clone到本地
  3. 建立一个branch
    git branch work
    git checkout work
  4. push到自己的网站
    git add path/file_name.py
    git commit -m "填写你的说明"
    git push origin work
  5. 在github上发送PR

获取github.com上的新数据

git fetch
git pull

实用代码

参考链接

git log --after=2019-06-12 --before=2019-06-20 --no-merges --format='%an'
# 关于 format:
# %H 提交对象(commit)的完整哈希字串
# %h 提交对象的简短哈希字串
# %T 树对象(tree)的完整哈希字串
# %t 树对象的简短哈希字串
# %P 父对象(parent)的完整哈希字串
# %p 父对象的简短哈希字串
# %an 作者(author)的名字
# %ae 作者的电子邮件地址
# %ad 作者修订日期(可以用-date= 选项定制格式)
# %ar 作者修订日期,按多久以前的方式显示
# %cn 提交者(committer)的名字
# %ce 提交者的电子邮件地址
# %cd 提交日期
# %cr 提交日期,按多久以前的方式显示
# %s 提交说明
git log --after=2019-06-12 --before=2019-06-20 --pretty=tformat: --numstat
# 关于 tformat:
# --numstat 这段时间提交的,总增加的行数,删除的行数,文件路径
# --stat 这段时间,每次提交的,增删,文件路径
# --shortstat 每次提交的增、删
# 一段时间内的提交次数
git log --after=2019-06-12 --before=2019-06-20 --no-merges --format='%an'  | wc -l

# 一段时间内总的增删行数
git log --after=2019-06-12 --before=2019-06-20 --pretty=tformat: --numstat | awk '{ loc += $1 + $2 } END { printf "%s",loc }'

清除历史记录

git checkout --orphan latest_branch # 切换到新的分支
git add -A # 缓存所有文件
git commit -am "commit message" # 提交跟踪过的文件
git branch -D master # 删除master分支
git branch -m master # 重命名当前分支为master
git push -f origin master # 提交到远程master分支

还有一个更狠的彻底抹除历史

rm -rf .git
git init
git remote add origin https://github.com/guofei9987/tmp
git add -A
git commit -m 'remove history'
git push -f origin master

指定 commit 时间

GIT_AUTHOR_DATE=2020-11-28T12:00:00 GIT_COMMITTER_DATE=2020-11-28T12:00:00 git commit --allow-empty -m "update"

环境变量

  • Git装好后有个cmd路径,找到这个路径,复制这个路径
    (例如\GitHubDesktop\app-0.8.0\resources\app\git\cmd)
  • 按下win键,输入”环境变量”。
    点击环境变量,选中Path,按编辑键
    上一步复制的路径,加到Windows的path环境变量下

一台电脑绑很多ssh

https://www.cnblogs.com/jikexianfeng/p/5873698.html


您的支持将鼓励我继续创作!

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK