git中的各种命令的总结

本篇文章对git使用过程中的一些常用的命令进行总结以及记录,方便以后使用。

git相关概念

本节介绍git中相对重要的几个概念,帮助更加透彻理解git的工作模式和实现流程。(以下概念部分只是我对这些概念比较直观的理解,不是官方的直接定义)

工作区

工作区,即实际操作中我们能够编辑操作的最为直观的部分,一般我们在工作区进行内容或者项目的编辑,然后将工作区的内容add到暂存区(这个下面会讲到),最后将暂存区的修改commit到版本库中;恢复过程中,也可将版本库或者暂存区的内容恢复到工作区。

版本库

版本控制软件必须存在的部分,用来保存提交的各个版本内容。版本库中最为重要的概念就是暂存区;在git中,在版本库和工作区之间有存在一层“暂存区”,暂存区顾名思义就是暂时存放的位置,可以更加灵活的操作保存的版本,暂存区可以多次add,一次commit;commit之后的修改内容就到了版本库中,即本地最终的存放位置,此位置在git本地目录的.git文件夹中,默认为隐藏目录,具体信息可以查看该目录。

修改与文件

git中操作或者管理的是修改而不是文件,什么是修改,在git软件中怎么体现,这句话又该怎么理解?我们可以通过一个实验进行验证,将本地工作区的内容进行更改,add到暂存区中,此时再将工作区的内容进行第二次更改,这时运行commit命令,会发现在git的版本库中只有第一次的修改被提交了,这个时候就是体现了暂存区的重要性,最终修改文件没有生效提交,就是因为最终内容没有被add到暂存区中;这里的修改指的是文件的新建、修改、删除统一称为git中的“修改”。

fast forward模式

首先强调一点,在实际开发工作过程中,应该禁用这种模式;为什么要禁用这种模式,下面进行解释:在进行多分支管理融合的时候,如果不显示的指定,那么默认情况下,Git会以这种模式执行多分支的融合,但这种模式下,删除分支后,会丢掉分支信息,不能查看到分支融合时的历史信息了,仿佛没有融合过一样,这样就比较危险了,因此要避免这样的操作。

git 相关的命令

这一部分主要包括git使用过程中的添加、提交、回退、恢复、分支创建、合并、删除等一些操作的命令以及具体的参数;

git add

提交工作区修改到暂存区,最为常用的命令为git add .,会将当前目录的所有修改全部添加到暂存区;如果要添加某个具体的文件可以加具体的文件名字。

git commit

提交暂存区的内容到版本库中,通过-m参数来指定提交版本库中的注释内容,建议这个必须要有,方便别人查看修改,同时在版本回退的时候,这个东西也是一个重要的参考。

git push

将本地版本库推送至远程库,在运行时要指定远程库和本地分支;一般情况下远程库默认为origin,推送的命令为git push origin mastermaster这里为本地的分支。

git reset

这个命令为回退操作,当发现误操作并且已经把误操作提交到版本库中后,通过该命令将版本库中的版本回退到前一个或者某一个版本,具体操作命令为git reset --hard HEAD^,该命令为回退到前一个版本,在git中,当前版本的标识为HEAD,上一个版本就是HEAD^;也可以将版本回退到中间的某个版本,这个时候就需要知道中间的版本的ID,可以通过git log (也可以指定参数--pretty=oneline只显示比较简略的信息)来查看提交的历史版本git内部的编号,通过指定编号的前几位来恢复到中间版本。

扫描二维码关注公众号,回复: 2526066 查看本文章

git reflog

通过reset将版本回退到了中间版本,这是你发现退错了,你想要回退的这个中间版本的后面的版本,怎么办呢?使用这个命令,就可以查看到你提交的所有的版本的信息,包括你会退后的后面的版本信息,知道版本信息后,再通过git reset就可以到达未来的版本了(强大)!

git diff

比较工作区和版本库中的不同,前提是没有指定具体的参数,并且修改的内容没有add到暂存区,如果进行了add操作,那么就会发现该命令的输出内容为空,如果add之后,又对文件进行修改,它直接比较的就是暂存区和工作区的内容;除非如下直接指定,git diff HEAD -- (file)通过这种指定,则直接进行版本库和工作区的比较,而不考虑暂存区的内容;(中间的--参数十分重要)。

git status

查看状态,会比较详细的列出暂存区和工作区的修改,方便我们进行状态的监控和知道哪些文件进行了修改。

git log

查看提交的状态,通过--pretty=oneline参数来简化输出;在分支管理中,通过--graph可以查看到分支合并的图结构(相关更多的操作还需要探索)。

git rm

进行文件的删除操作,当在本地工作区把文件删除后,面临两种操作:1、删除版本库中的文件;2、恢复工作区中的文件。如果要进行第一中操作时,使用该命令。

git checkout

修改的删除和分支的(创建)切换;这里指的修改的删除是指将内容从暂存区恢复到工作区,可以使用如下命令git checkout -- file;同时也可以进行分支的切换如git checkout 分支,添加-b参数后就会创建该分支并且进行切换动作。

git branch

所有有关分支的操作都可以使用这个命令,查看分支、创建分支、删除分支,还有强行删除分支;这里强调一下删除为-d,强行删除为-D

git merge

对不同分支的内容进行合并,合并时,先切换到低版本的分支,然后在该命令后加你要融合的分支,git merge 分支,就会进行分支的融合了。当融合发生冲突时,就必须解决冲突后进行再进行融合,可以直接打开文件进行冲突的解决,文件中会标记出冲突的位置(具体可以实际操作一下)。

git clone

从远程库下载工程或者项目,比较简单(比较常用的就是GitHub)

git stash

保存当前工作现场,当前工作正在进行,突然其他工作介入,你不得不进行分支切换的时候可以使用该命令进行工作现场的保存;恢复命令用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;另一种方式是用git stash pop,恢复的同时把stash清空。

git show

可以对提交的修改进行显示,同时可以根据版本号查看具体的内容

git tag

进行标签的指定,git内部生成想序列号比较不容易理解,可以指定tag来对比较重要的提交进行版本的绑定。

git config

可以查看和设置git中的各种设置,例如在公司局域网中要设置代理上网,可以通过如下配置;
git config --global http.proxy来查看代理配置;后面加上地址和端口就可以进行配置(注意要用引号引起来)

总结

git的功能相比svn还是强大了很多的,相关的细节还需要仔细地研究,本篇博客只是给出最为基本的操作。

猜你喜欢

转载自blog.csdn.net/wangxiaotongfan/article/details/79289740
今日推荐