git&github自学(5):更改提交的操作:reset、release

通过(3)和(4),已经能够实现在完成功能开发后进行提交并查看提交日志,接下来要学习如何操作历史版本。
git能够进行高效协同开发的另一个基础就是借助分散仓库的优势,在不影响其他仓库的前提下对历史版本进行操作。

一,reset

git rest --hard命令让仓库的 HEAD、暂存区、当前工作树回溯到指定时期的状态,仅需要提供指定时间点的哈希值即可,那么,在哪里去找到这个哈希值呢?记得git log --graph命令码?补充一下:git log命令只能查看以当前状态为终点的历史日志。
在这里插入图片描述

1. 回溯到创建 feature-A 分支前:

在这里插入图片描述
结果表明,已经成功回溯到特性分支( feature-A)创建之前的一个状态。由于所有文件都回溯到了指定哈希值对应的时间点上,README.md文件的内容也恢复到了当时的状态,让我们一起来康康:
在这里插入图片描述
果然,feature-A木有了。

2. 创建 fix-B 分支

在这里插入图片描述
在README.md中添加一行fix-B并进行提交,方便后续学习回溯特性:
在这里插入图片描述
此时,我们处于这样一个状态:
在这里插入图片描述
接下来我们的目标是主干分支合并 feature-A 分支的修改后,又合并了 fix-B 的修改:
在这里插入图片描述

3.推进至 feature-A 分支合并后的状态

首先要恢复到 feature-A 分支合并后的状态的时间哈希值,显然git log命令是不能在当前状态以某种操作结束后得到 feature-A 分支合并后的状态的时间哈希值的,可以用**git reflog命令,查看当前仓库的操作结束后的所有操作日志。**在日志中找出所需的哈希值:
在这里插入图片描述
然后切换到master分支,在回溯到所需状态,如下:
在这里插入图片描述
结果表明,我们当前处于这样一个状态:
在这里插入图片描述
最后,就可以像之前master合并feature-A一样合并fix-B啦:
在这里插入图片描述
???合并失败?提示是因为合并的README.md内容起了冲突,看来是feature-A 分支更改的部分与本次想要合并的 fix-B 分支更改的部分发生了冲突。

4.查看冲突部分并将其解决

查看README.md:
在这里插入图片描述
发现======= 以上的部分是当前 HEAD 的内容,以下的部分是要合并的 fix-B 分支中的内容。
解决办法就是直接在文档里进行修改,改成需要的结果再合并就行:
在这里插入图片描述
此时,在解决冲突并提交后,fix-B就被合并到master分支中,达到目的啦。

提交后发现提交信息表达的仅是master合并fix-B的一个过程,并不能完全表达“合并”信息,这怎么办呢?继续看。

5.git commit --amend——修改提交信息

要修改上一条提交信息,可以使用 git commit --amend命令,直接在启动的编辑器里修改就行,修改后:
(graph图看着不舒服,就画圈圈和线条整理一下,graph图中线条的颜色没有也别的意义,仅是为了好区分):
在这里插入图片描述
问题来了:怎样编写好的commit???

二,rebase

在合并特性分支之前,如果发现已提交的内容中有些许拼写错误等(如前面第一次提交”修改了一个编辑错误,可忽略本次提交“,就产生了一次无意义的提交,这样不太好),不妨提交一个修改,然后将这个修改包含到前一个提交之中,压缩成一个历史记录。

1,创建 feature-C 分支并体现编辑错误

在这里插入图片描述
对于一个小小的修改提交,用git commit -am 比用git add README.md与git commit -m的组合来的更直接。

2,修正拼写错误

现在将拼写改正确,并提交:
在这里插入图片描述
错字漏字等失误称作 typo,就像这个问题被发现时提出的问题一样,我们不希望在历史记录中看到这类提交,该怎样解决呢?接着看。

3,更改历史

最直接的办法,就是如果能在最初提交之前就发现并修正这些错误,也就不
会出现这类提交了。实际操作中,将 "Fix typo"修正的内容与之前一次的
提交合并,在历史记录中合并为一次完美的提交。
执行git rebase -i HEAD~2命令,可以选定当前分支中包含HEAD(最新提交)在内的两个最新历史记录为对象,并在编辑器中打开,将Fix typo前的pick改为fixup:
在这里插入图片描述
保存修改并退出:
在这里插入图片描述
看一下日志,发现Add feature-C这条提交的时间哈希值已发生变化,再次说明合并成功:
在这里插入图片描述
这次演示结束,返回主分支合并当前分支:
在这里插入图片描述

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页