首页 > 代码库 > git与github的一点总结(二)

git与github的一点总结(二)

继续上篇文章的本地git使用流程

4、跟踪一个文件之后,git就可以记录它的每次变动(即版本),然后根据需要回退或前进到某个版本。对一个文件做出修改后,最重要的是及时提交此次修改,输入git commit 如图:

技术分享(注意每次提交前要先add。git commit后出现下图)

技术分享(这里经过了修改,因为git默认的编辑器是nano,个人感觉不好用,于是用git config --global core.editor vim命令把默认编辑器改成了vim)

第一行是要为本次提交输入一个说明或标记之类的东西,以便别人review的时候快速知道你这次提交到底干了什么,我随便写了一个:

技术分享

然后输入:wq退出,如下:

技术分享

会显示本次提交的状态。

(1)如果嫌每次都要打开vim麻烦,可以直接把提交说明放在-m参数后面,如下:

技术分享

(2)更进一步,如果还嫌每次修改都要add麻烦,可以添加-a参数,如下:

技术分享

这个参数会把从上次提交到现在之间所有的修改一次性全部提交,而且不必再add。

(3)如果上次的提交信息写错了,那么 --amend参数给你一个改错的机会:

技术分享(原来的提交信息是fourth)

技术分享(输入git commit --amend后会打开vim,我把信息修改成fourth_new,保存退出)

技术分享(新的提交信息就成了fourth_new

注意,这只能修改提交信息,不能修改提交内容本身。


5、查看提交历史,使用git log命令可以查看所有的历史提交,它使用less命令的方式列出所有的提交说明等信息,如下图:

技术分享

可以看到显示的顺序是倒序的,从最近一次提交开始,越往下的提交越”旧“。如果只想查看最近n次提交,而不是全部,可以像下面那样添加一个参数:

技术分享(只列出了最近两次提交信息)

仅仅git log列出的信息还是图样图森破的,想要进一步查看详细信息,可以使用-p选项,如下:

技术分享

另外还有一个--stat选项,用来统计一些信息,主要是其中添加和移除的行数,并在最后列出所有增减行
数小计:

技术分享

git log还有很多选项,它们的妙用自己慢慢研究吧。。


6、回退版本:git reset命令。这是非常重要的一个命令,对我来说,它就是我的git后悔药,后悔药啊亲~

(1)前面说过git checkout file命令的作用,即撤销本次对文件所做的修改,但这里有个前提,就是没有git add此次修改,否则git checkout是不起作用的,如下:

技术分享

技术分享如图,git checkout code.c没起作用

要想让这个命令起作用,首先要撤销刚才的add命令,方法如status提示中给的那样:

技术分享

然后checkout才起作用,换句话说,git checkout只能作用于那些未被跟踪的修改:

技术分享

(2)想要让文件恢复到上次提交时的面目,如下图,我们看到了最近两次提交:

技术分享

当下,code.c的样子就是fourth_new提交的样子,那么怎样让它变成third提交的样子呢?如下:

技术分享

哈哈,成功!这里要注意的是,HEAD^,这里HEAD指的就是最新一次提交,加上一个^表示上次提交,两个表示上上次提交。。。那最多能加多少个呢?呃,我表示不清楚,不过加太多的话,你也数不清了对不?所以,如果想回退到某个非常靠前的版本,其实可以直接用commit后面长长的ID直接替换掉HEAD,如下:

技术分享(这是最近三次提交,下面演示直接退到second版本)
技术分享

搞定~~不过由--hard你也看出这个方法很暴力,second之后的那几次提交全被抛弃了。。


git与github的一点总结(二)