怎麼 revert merge 的 commit 呢?
在還沒提交到遠端之前,可以使用git reset --hard commit 去做取消這個merge。
如果已經push到remote branch 最好使用 revert 的方式取消merge的更改
這時候可以使用 git revert -m 1 [commit] 去撤銷 [commit] 的 merge
-m 這個地方就是選擇要保留的 branch 是什麼,指定哪條是main line
usage: git revert [<options>] <commit-ish>...
or: git revert <subcommand>
--quit end revert or cherry-pick sequence
--continue resume revert or cherry-pick sequence
--abort cancel revert or cherry-pick sequence
-n, --no-commit don't automatically commit
-e, --edit edit the commit message
-s, --signoff add Signed-off-by:
-m, --mainline <n> parent number
--rerere-autoupdate update the index with reused conflict resolution if possible
--strategy <strategy>
merge strategy
-X, --strategy-option <option>
option for merge strategy
-S, --gpg-sign[=<key-id>]
GPG sign commit
舉個例子來看,
git lg
* 7b76c89 - (20 seconds ago) Revert "merge dev" - PC Liao (HEAD -> master)
* 67e6313 - (6 minutes ago) merge dev - PC Liao
|\
| * 4ee7f1a - (7 minutes ago) CCCC - PC Liao (dev)
* | 01aa3f6 - (7 minutes ago) BBBBB - PC Liao
|/
* 0915ed8 - (9 minutes ago) A - PC Liao
git show 67e6313
commit 67e631345b2e68488776ec32c6c1a95185049877
Merge: 01aa3f6 4ee7f1a
在 master 上 revert 掉 67e6313
這個是使用了,指定main line 為 2 ,也就是 4ee7f1a 這條線。
git revert -m 2 67e6313
git show 7b76c89
Revert "merge dev"
This reverts commit 67e631345b2e68488776ec32c6c1a95185049877, reversing
changes made to 4ee7f1a98cb8ac2fe8f715e600d69822bbbe4889.
diff --git a/file b/file
index 4a4bbb6..4bf4ecf 100644
--- a/file
+++ b/file
@@ -1,3 +1,2 @@
AAAAA
-BBBBB
CCCCC
沒有留言:
張貼留言