Git常用终端命令

作者: chenfanfang | 来源:发表于2016-12-19 17:55 被阅读2063次

    写在前面

    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/<tagname>

    删除一个远程标签

    git push origin 标签名称

    推送某个标签到远程

    git push origin --tags

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

    相关文章

      网友评论

      本文标题:Git常用终端命令

      本文链接:https://www.haomeiwen.com/subject/ydsnmttx.html