Git常用终端命令


写在前面:

Git想必大家都熟悉了,由于现在Git的管理工具用的的确很方便,估计大家都用Git管理工具了,所以真正能够熟练用终端敲出常用的Git命令,想必没有多少人(当然也包括我)。

我用Git比较无规律,都是混合使用的:终端Git命令(会一些常用的) + Xcode自带Git管理工具 + SourceTree。具体会使用哪种方式,完全看心情和操作的熟练度。 最近闲来无事(等后台哥们的接口),索性看了下常用的Git终端命令,顺便做了下笔记与大家分享,当然也方便了以后自己的查阅。

本文Git常用命令知识点基本来自“廖雪峰 ”前辈的Git教程。若对Git没有些许的了解,只看常用命令可能对大家的帮助不是太大,所以建议大家有空的时候花点时间去看下“廖雪峰 ”前辈的Git教程,通熟易懂,相信会有所收获。

最后,若文章有什么错误的地方,望评论指出。

git init

初始化一个Git仓库:把某个目录变成Git可以管理的仓库

git add test.h

把文件test.h添加到仓库

git commit -m “添加了test.h文件”

把文件提交到仓库。(git commit命令,-m后面输入的是本次提交的说明)

git status

查看工作区的状态

git diff test.h

查看test.h文件修改了什么(diff—>difference)

git log

显示从最近到最远的提交日志。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数

git reset –hard HEAD^

回到上一个版本

git reset –hard HEAD^^

回到上上个版本

git reset –hard HEAD~100

回到上100个版本

git reset –hard 791c95aa44cc5540d93a146d6d341e5d38936762

根据提交的版本号进行版本的回退

git reflog

查看命令历史,以便确定要回到未来的哪个版本。

git checkout – readme.txt

命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况: 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态; 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。

git reset HEAD 文件

例如: git reset HEAD readme.txt

可以把暂存区的修改撤销掉(unstage),重新放回工作区。若要丢弃工作区的修改,还需要git checkout – readme.txt

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

git remote add origin git@……………….

关联一个远程库

git push

把当前分支推送到远程

git push -u origin master

当远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

git clone git@………….

克隆

git branch dev

创建一个名称叫dev的分支

git checkout dev

当前的分支切换为dev分支

git checkout -b dev

创建一个dev分支,并且切换到dev分支(相当于是是前面两句命令的合并)

git branch

列出所有分支,当前分支前面会标一个*号

git merge dev

把dev分支的工作成果合并到当前分支上、git merge命令用于合并指定分支到当前分支

git branch -d dev

删除dev分支

git branch -D dev

若dev分支还没合并到所切出来的分支,则git branch -d dev将不能删除dev分支,可以通过git branch -D dev强行删除dev分支

git log –graph

查看分支合并图

git log –graph –pretty=oneline –abbrev-commit

git merge –no-ff -m “备注的信息” dev

将dev分支合并到当前分支的时候强制禁用Fast forward模式 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

合并分支时,加上–no-ff 参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward 合并就看不出来曾经做过合并。

git stash

可用来暂存当前正在进行的工作

git stash list

查看已暂存列表

git stash apply

恢复工作现场,但是恢复后,stash内容并不删除

git stash drop

删除stash内容

git stash pop

恢复的同时把stash内容也删了,相当于前面两个命令的结合

git stash apply stash@{0}

恢复指定的stash

git remote

要查看远程库的名称

git remote -v

显示更详细的远程库信息。显示可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址

git push origin 本地分支的名称

把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

git branch -r

查看远程分支

git branch -a

查看所有分支(会显示本地分支和远程分支)

git fetch

个人粗浅的理解为将远程所有的分支信息拉取到本地

git checkout -b local-branchname origin/remote_branchname

将远程分支映射到本地命名为local-branchname 的一分支(本地分支名称最好和远程分支名称一致)

git branch –set-upstream dev origin/dev

指定本地dev分支与远程origin/dev分支的链接

git tag

查看所有标签

git tag 标签名称

打标签:默认标签是打在最新提交的commit上的

git tag 标签名称 commit的版本号

例如:git tag v0.9 6224937 在制定的提交位置上打上标签

git show 标签名称

查看标签信息

git tag -a 我是标签 -m “添加了标签” 3628164

例如:git tag -a v0.1 -m “version 0.1 released” 3628164 创建带有说明的标签,用-a指定标签名,-m指定说明文字。经测试 -a可以去掉,也就可以写成 git tag 我是标签 -m “添加了标签” 3628164

git tag -d v0.1

删除一个叫做 v0.1的本地标签

git push origin :refs/tags/

删除一个远程标签

git push origin 标签名称

推送某个标签到远程

git push origin –tags

一次性推送全部尚未推送到远程的本地标签

原文