簡體   English   中英

改寫導致合並沖突的過去提交

[英]Rewording past commits that caused merge conflicts

我正在練習如何使用 git。 我提交了一個提交,另一個貢獻者提交了一個導致合並沖突的提交,然后我們解決了合並沖突並意識到導致合並沖突的前兩個提交具有相同的提交消息。 所以我們嘗試使用 git rebase -i to go 到 VIM 並使用 reword 語法對其進行改寫。 保存並退出 VIM 編輯器后,打開 VIM 以更改第一個提交的提交消息。 更改文件的文本並保存並退出后,它給出了這個提示。

CONFLICT (content): Merge conflict in practice error: could not apply ccd42be...更新了 practice.txt

發生了什么,我該如何解決?

默認情況下git rebase不會保留合並提交。 從手冊頁:

默認情況下,rebase 將簡單地從待辦事項列表中刪除合並提交,並將 rebase 提交放入單個線性分支。

您可以通過提供選項--rebase-merges來更改它:

使用 --rebase-merges,rebase 將嘗試通過重新創建合並提交來保留要重新設置的提交中的分支結構。 這些合並提交中的任何已解決的合並沖突或手動修改都必須手動解決/重新應用。

因此,僅git rebase --interactive git 將放棄已經解決了一些手動合並沖突的提交,現在抱怨“無法應用......”,因為它缺乏手動解決1

我總是使用設置為rebase -i --rebase-merges的別名ri運行交互式 rebase,但是當合並提交包含手動解析時,您仍然需要再次解析它們,盡管當您可以重用原始合並提交時這更簡單


此外,您不能在編輯器中重命名文件,只能使用git mvgit add + git rm 嚴格來說 git 不跟蹤文件,而是跟蹤內容。 所以“重命名”是通過啟發式完成的。


1因此,不需要手動解決的合並提交比需要手動解決的合並要好得多。 關於最好的策略是將功能分支合並或重新設置到主分支中,有不同的意見。 我非常喜歡變基,並且想強調變基然后創建一個“干凈的”合並提交,而不是不需要任何手動解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM