Git之反悔

来源:互联网 发布:迁移阿里云rds到aws 编辑:程序博客网 时间:2024/04/30 07:02

最近说忙也不忙,说闲也不闲,总之有点蛋疼,还是来写写这个放松放松,之前朋友说你就上几张图就搞定了,还写个毛,你干脆以后直接用图得了,我想了想后,跟他说,兄弟 ,就算我写得再详细,如果你不操作一把,记得住么,如果你按照我的图和解释,操作几把,该懂的自然懂了。好了,不扯了,继续。 今天呢,就是在操作Git的时候,遇到了各种想反悔的情况 ,我结合我工作中的情况一一列举 ,不说专治各种不服,也可以治大部分不服,Go~

1、对最新的提交做修改

    有时候我们在刚提交完了后,突然发现尼玛怎么还有一个文件忘记提交了,这个时候还是比较好解决的
    git add 你要提交的文件,再git commit --amend,上图说话


稍微解释下,当我们用git show查看第一个提交的记录的时候,我们看到最后一行显示的是third line,我们用vim编辑了david文件后,用cat查看,、看到我们增加了一个fourth line。
好了,现在我们认为这个david文件是刚才没有提交完全的,那么可以了,先git add ,再git commit --amend ,这个时候跳出一个第二个图,直接退出即可,退出后再用git show查看后,我们发现我们的补充的提交,已经合并到最新的提交中。


2、git reset的各种命令意思
       git reset [--mixed | --soft | --hard | --merge] [-q] [<commit>]
       git reset [-q] [<commit>] [--] <paths>...

第二种:用版本库中的对应commit中的patch路径文件替换暂存区对应patch文件,相当于git checkout -- <patch>
第一种:
       --mixed (默认可以不带这个参数) ,替换版本库和暂存区
       --soft ,只是替换版本库
       --hard ,替换版本库,暂存区,以及工作区
理解并且擅长使用--soft和--hard选项来对最新的提交进行悔棋操作

3、好了,那么问题来了,处理一个项目几个问题后,我想把这几个问题先提交了, 在提交的时候 ,我发现第二个提交或者第三个(为什么是第二个或者第三个,后面说)提交其实是不完善的,我想加进一些内容 ,而我又不想,重新提交一次。这个当然也是没有问题的,就用我刚才的方法解决看看,还是上图说话。




我又开始啰嗦的解释了,我们用git log --oneline -3查看到了前三条的提交记录,现在,我觉得第二条记录少了一行数据,我要在第二个提交中加入一行数据 。 加入什么数据呢,我用vim编辑后,和cat 和 git df查看,没错,就是加入fifth line这一行。 这个时候提交不多嘛,可以用git reset恢复恢复 (这就是之前为什么用第二个和第三个做例子的原因,因为如果再靠前了,我们就不应该用这个方法了,后面继续)。

我们用git reset 到第二条记录的前一条记录,也就是第二条记录。完了之后呢,我们用git log --oneline -1查看当前的第一条记录,果然是之前的第三条记录,好了,用git status ./查看 ,可以看到这个时候 ,david01已经是modified的状态 ,提示我们提交呢,是不是觉得git很人性化的设计 ,好了,我们用git df查看下david文件内容是不是完全的,OK,我们看到了fifth line,已经全部搞定 ,这个时候根据提示,add ,comit 。最后依次提交所有的东西,我们再用git log查看,是不是很妥了。

要下班了,本来准备明天写的,突然想到一个事情 ,补充一副图,不解释 ,下班~


可能写得不是很周全,动动手吧,若有写的不好的地方 ,欢迎指出~






















0 0
原创粉丝点击