2018年11月10日 星期六

[git] git 怎麼撤銷 merge 合併後的 commit revert merge branch


怎麼 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


沒有留言:

張貼留言