本文博客地址:Git revert - 回滚操作.
在开发过程中,有些时候会出现一些错误的提交,这个时候可以用 git revert 命令把这些错误的提交给回滚了。
介绍
git revert 命令用来将指定的 commit 回滚。
回滚原理是通过新建一个指定的提交的反操作的提交。
下面以上面的例子介绍 revert 的使用,假设当前的分支状态如下图所示:
featureA - featureB - featureC - featureD
想要在主分支应用 featureC 特性,可以进行如下的操作:
现在的分支状态变成了下面的结构:
featureA - featureB - featureC - featureD - revertedFeatureC
示例
结合一个示例来看上面的过程,下面是一个已经准备好的分支:
$ git log --oneline
a38fcc8 featureD
7eb26bc featureC
92a0733 featureB
edd842a featureA
首先来查看 featureC 做了哪些改动:
$ git show 7eb26bc
diff --git a/featureC.md b/featureC.md
new file mode 100644
index 0000000..7eb26bc
--- /dev/null
+++ b/featureC.md
@@ -0,0 +1 @@
+'featureC'
从上面可以看出来 featureC 增加了 featureC.md 文件,此时尝试 revert featureC:
$ git revert 7eb26bc
[revert 7eb26bc] Revert "featureC"
1 file changed, 1 deletion(-)
delete mode 100644 featureC.md
$ git log --oneline
a8be289 (HEAD -> revert) Revert "featureC"
a38fcc8 featureD
7eb26bc featureC
92a0733 featureB
edd842a featureA
可以看出多了一个新的提交 a8be289: Revert "featureC" ,来看一下这个提交做了什么事情:
$ git show a8be289
diff --git a/featureC.md b/featureC.md
deleted file mode 100644
index 9d69d61..0000000
--- a/featureC.md
+++ /dev/null
@@ -1 +0,0 @@
-'featureC'
可以看出来,这个提交的内容刚好是和 featureC 相反,删了了 featureC.md 文件。
下面详细来看一下 git revert 的各种命令:
使用
语法:
git revert ..
可以 revert 一个或多个提交。
git revert commitHashA..commitHashB
可以 revert 从 commitHashA 到 commitHashB 之间的所有提交,其中不包含 commitHashA ,包含 commitHashB。
git revert commitHashA^..commitHashB
同上面类似,区别在于包含 commitHashA 的提交:
几个有用的参数
-e 或 --edit
允许你在 revert 之前编辑提交消息。
-m 或 --mainline
如果提交的是一个合并分支的提交,这个操作会失败,因为 revert 不知道选择那边的改动。
这个参数的作用就是告诉 revert 采用哪边的改动,通常不建议 revert 合并分支的提交。
-n 或 --no-commit
只应用 revert 的内容变更,但不会产生新的提交,即需要自己手动进行 git commit 的过程。
冲突处理
git revert (--continue | --skip | --abort | --quit)
在 revert 过程中,有时候会有代码的冲突,这时 revert 的操作会暂停,可以选择如下操作:
git revert --continue
在解决冲突后,可以使用 git revert --continue 继续后面的 revert 过程。
git revert --skip
跳过当前的 commit,继续后续的 revert 过程。
git revert --abort
放弃 revert,回到 revert 之前的状态。
git revert --quit
停止 revert,不回到 revert 之前的状态,保留现状。
参考
本文博客地址:Git revert - 回滚操作.
在开发过程中,有些时候会出现一些错误的提交,这个时候可以用
git revert命令把这些错误的提交给回滚了。介绍
git revert命令用来将指定的commit回滚。回滚原理是通过新建一个指定的提交的反操作的提交。
下面以上面的例子介绍
revert的使用,假设当前的分支状态如下图所示:想要在主分支应用
featureC特性,可以进行如下的操作:现在的分支状态变成了下面的结构:
示例
结合一个示例来看上面的过程,下面是一个已经准备好的分支:
首先来查看
featureC做了哪些改动:$ git show 7eb26bc diff --git a/featureC.md b/featureC.md new file mode 100644 index 0000000..7eb26bc --- /dev/null +++ b/featureC.md @@ -0,0 +1 @@ +'featureC'从上面可以看出来
featureC增加了featureC.md文件,此时尝试revert featureC:可以看出多了一个新的提交
a8be289: Revert "featureC",来看一下这个提交做了什么事情:$ git show a8be289 diff --git a/featureC.md b/featureC.md deleted file mode 100644 index 9d69d61..0000000 --- a/featureC.md +++ /dev/null @@ -1 +0,0 @@ -'featureC'可以看出来,这个提交的内容刚好是和
featureC相反,删了了featureC.md文件。下面详细来看一下
git revert的各种命令:使用
语法:
git revert ..
可以
revert一个或多个提交。git revert commitHashA..commitHashB
可以 revert 从
commitHashA到commitHashB之间的所有提交,其中不包含commitHashA,包含commitHashB。git revert commitHashA^..commitHashB
同上面类似,区别在于包含
commitHashA的提交:几个有用的参数
-e 或 --edit
允许你在
revert之前编辑提交消息。-m 或 --mainline
如果提交的是一个合并分支的提交,这个操作会失败,因为
revert不知道选择那边的改动。这个参数的作用就是告诉
revert采用哪边的改动,通常不建议revert合并分支的提交。-n 或 --no-commit
只应用
revert的内容变更,但不会产生新的提交,即需要自己手动进行git commit的过程。冲突处理
在
revert过程中,有时候会有代码的冲突,这时 revert 的操作会暂停,可以选择如下操作:git revert --continue
在解决冲突后,可以使用
git revert --continue继续后面的 revert 过程。git revert --skip
跳过当前的
commit,继续后续的 revert 过程。git revert --abort
放弃 revert,回到 revert 之前的状态。
git revert --quit
停止 revert,不回到 revert 之前的状态,保留现状。
参考