本文讲解并且亲测了常用的Git命令

Git命令 选项 参数 说明
git init 初始化/新建 当前目录为本地git仓库
git add -A或-add 添加当前目录下所有未被tracking以及被修改的文件到index中
git add file 添加 file文件/指定文件 到index中
git add . 递归添加当前目录下的所有文件(包含目录)到index中
git rm –cached file 只删除index中指定的文件,而处于工作目录(也即文件目录)中的文件不会受到影响(不会被删除)
git rm -f或–force file 同时删除index和工作目录中指定的文件
git rm -r * 删除index暂存区里的全部文件
git status 查看整个项目已经初始化的目录下所有文件的状态(处于 .gitignore 文件里的文件会被)
git status . 查看当前目录下所有文件和目录的状态(非递归,也即当前目录内的子目录内的文件无法查看)
git commit -m ‘message’ 提交当前index中的文件到仓库repo中,并且附上提交说明/信息
git commit -am ‘message’ git add 和 git commit 的组合
git commit –amend -m ‘this is amend command’ 当index没有新文件/修改的文件的前提下,该参数可以用来修改上一次commit的说明。当index中有新的文件或者修改的文件,该参数就会把这次index里的文件追加到上一次的commit中,而不会产生一次新的commit
git log 显示所有的commit记录
git log -1 显示1行日志 -n为n行
git log –stat 显示每个文件的变动信息
git log -p -m
git log v1.0 显示v1.0的日志
git log branch-1 ^branch-2 查看 branch-1 有,而 branch-2 中没有的 commit
git log branch-2 ^branch-1 同理 查看 branch-2 有,而 branch-1 中没有的 commit
git log branch-1…branch-2 查看 branch-2 中比 branch-1 中多提交了哪些commit,注意,列出来的是两个点后边(此处即branch-2)比前边(此处即branch-1)多提交的内容。
git log branch-2…branch-1 同理 查看 branch-1 中比 branch-2 中多提交了哪些commit
git log branch-1…branch-2 不知道谁提交的多谁提交的少,单纯想知道有什么不一样,注意三个点
git log –left-right branch-1…branch-2 在上述情况下,再显示出每个提交是在哪个分支上,注意 commit 后面的箭头,根据我们在 --left-right branch-1…branch-2 的顺序,左箭头 < 表示是 branch-1 的,右箭头 > 表示是 branch-2的。
git show fjf01 显示某个commit的详细内容
git show HEAD 显示HEAD指向的commit的提交日志
git show HEAD^ 显示HEAD的父(上一个版本)的commit的提交日志
git show HEAD^^ 显示HEAD的上两个版本的commit的提交日志
git show HEAD^5 显示HEAD的上5个版本的commit的提交日志
git show v1.0 显示v1.0标签的版本信息
git tag 显示已存在的tag
git tag -l 显示已存在的tag
git tag -a v3.0 -m ‘new version’ 给当前HEAD指向的commit打上标签(tag),每次打tag都需要加上说明-m
git tag -a v3.1 eci3t8 -m ‘new version’ 给以前的某个历史提交打上标签(tag),并附加上说明-m
git push –tags 把本地全部标签推送到远程仓库,不加–tags参数默认是不会把标签推送到远程的
git push remote_host v1.0.1 推送本地指定标签到远程
git push remote_host --delete tag v1.0.1 删除远程指定标签
git clone xxx.git 克隆远程仓库到本地
git clone xxx.git local_dir 克隆远程仓库到本地指定目录下
git clone -b new_branch_name https://xxxxx.git clone时创建新的分支替代默认Origin HEAD(master)

配置

Git命令 选项 参数 说明
git config –system user.name “your name” 该系统下,所有用户使用的配置
git config –global user.name “your name” 该用户下的配置
git config –local user.name “your name” 该 项目project/仓库repository 下的配置
git config –system user.email myemail@gmail.com
git config –global user.email myemail@gmail.com
git config –local user.email myemail@gmail.com
git config –list 查看配置,注意,所处的目录不同,显示的配置信息也不同哦

分支命令

Git命令 选项 参数 说明
git checkout dev 切换到dev分支上,也是把dev分支的代码检出到工作区(working tree)
git checkout sha1-value 把指定历史版本的代码完整检出到工作区
git checkout sha1-value /path/to/file 将指定文件的某个历史版本检出到工作区
git checkout sha1-value:/path/to/file new-name 将指定文件的某个历史版本检出到工作区并且修改该文件名
git checkout -t origin/dev 创建本地dev分支(与远程对应分支同名)并换到该分支上,并且设置新分支dev的upstream信息
git checkout -b dev origin/dev 等同于上面命令。从当前分支创建并检出(切换到)新分支的命令。实际上是git checkout -b new-branch-name current-branch 的简写形式,即默认从当前HEAD分支创建新新分支
git checkout -b new-branch-name 172je2 从历史版本为 172je2 上创建新分支并且切换到该分之上
git checkout 取消对文件的修改,还原到最近的版本,废弃本地做的修改
git branch new-branch-name 172je2 从历史版本为 172je2 上创建新分支,但不会切换到该分之上
git branch -a 查看所有分支
git branch -d branch_name 删除branch_name分支
git merge branch_name 把branch_name分支合并到本分支中(fast-forward模式)
git merge –no-ff branch_name 把branch_name分支合并到本分支中,非fast-forward模式,即会创建一个合并的提交

分支对比

Git命令 选项 参数 说明
git diff branch1 branch2 –stat 显示出所有有差异的文件列表
git diff branch1 branch2 文件名(带路径) 显示指定文件的详细差异
git diff branch1 branch2 显示出所有有差异的文件的详细差异
git log branch-1 ^branch-2 查看 branch-1 有,而 branch-2 中没有的 commit
git log branch-2 ^branch-1 同理 查看 branch-2 有,而 branch-1 中没有的 commit
git log branch-1…branch-2 查看 branch-2 中比 branch-1 中多提交了哪些commit,注意,列出来的是两个点后边(此处即branch-2)比前边(此处即branch-1)多提交的内容。
git log branch-2…branch-1 同理 查看 branch-1 中比 branch-2 中多提交了哪些commit
git log branch-1…branch-2 不知道谁提交的多谁提交的少,单纯想知道有什么不一样,注意三个点
git log –left-right branch-1…branch-2 在上述情况下,再显示出每个提交是在哪个分支上,注意 commit 后面的箭头,根据我们在 --left-right branch-1…branch-2 的顺序,左箭头 < 表示是 branch-1 的,右箭头 > 表示是 branch-2的。

修改commit

Git命令 选项 参数 说明
git rebase -i 到哪个旧commit的hash值 注意,该commit是不会被合并的。接着进入交互模式,排第一行的是最旧的commit,除了这一个外,把每个commit前的pick改成squash,就相当于合并到第一行的commit上,接着修改commit信息。

按功能排序

取消修改,恢复版本

取消对文件的修改。还原到最近的版本,废弃本地做的修改。
git checkout -- <file>

取消已经暂存的文件。即,撤销先前"git add"的操作
git reset HEAD <file>...

修改最后一次提交。用于修改上一次的提交信息,或漏提交文件等情况。
git commit --amend

回退所有内容到上一个版本
git reset HEAD^

回退a.py这个文件的版本到上一个版本
git reset HEAD^ a.py

向前回退到第3个版本
git reset –soft HEAD~3

将本地的状态回退到和远程的一样
git reset –hard origin/master

回退到某个版本
git reset 057d

回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit.(代码回滚到上个版本,并提交git)
git revert HEAD

回滚单个文件
git reset sha-1 path/to/file
git commit path/to/file -m 'message'
git checkout path/to/file

几点说明:

  • 一次commit是指当你输入git log是,看到的一串码,如commit e7d1b777de790970af704dbeac8c0ef3d21335b4,这算一次commit

[https://www.pureweber.com/article/git-pretty-output/]