[英]Is it possible to revise the resolution to a merge conflict in git?
我正在使用 git(使用 gitkraken)與合作者一起處理 tex 文件。 我們在同一個分支上工作,當我們中的一個人將我們的最新工作推送到該分支時,在某些時候出現了一些合並沖突。 從那以后,我們一直在處理這個文件,但我們意識到我們想要“重做”解決來自幾次提交的合並沖突。
有沒有干凈的方法來做到這一點?
我想到的一件事是復制有問題的文件版本(只有一個感興趣的文件),然后覆蓋文件的當前版本,然后將該文件推送到當前分支,但恐怕這將覆蓋自有問題的原始沖突以來的一些更改(我們希望保留)。 另一種方法是復制具有我們希望保留的某些更改的舊版本,然后使用差異工具有選擇地合並我們希望更改的內容。
最后一個選項是我能想到的最好的方法。 有沒有更好的辦法?
每次提交——包括合並提交——只是保存所有文件的完整快照。
一旦你與其他人合作,通常不值得花很多精力回去“修復”以前的提交。 事實上,這在技術上是不可能的:你不能改變任何現有的提交。 您最終要做的是提供新的和改進的替代提交,以代替原始提交。 例如,假設:
...--I--J
\
M--N--O <-- branch (HEAD)
/
...--K--L
是當前的情況,即通過J
和L
現有提交合並為M
,並且您和他們已經在M
之上構建了N
和O
。 您現在發現由於某些沖突的錯誤解決,存儲在合並提交M
中的快照中存在“錯誤”。
制作M
的更正版本的唯一方法是進行新的合並提交, M'
。 (有幾種方法可以做到這一點。)結果是:
...--I--J__
| \
| M--N--O <-- branch
\ /
x
/ \
...--K--L---M' <-- newbranch (HEAD)
也就是說,即使您現在在這個新的替換分支newbranch
上進行了新的和改進的合並M'
,錯誤合並M
仍然存在。 您現在還需要將N
和O
復制到新的和改進的N'
和O'
:
...--I--J__
| \
| M--N--O <-- branch
\ /
x
/ \
...--K--L---M'-N'-O' <-- newbranch (HEAD)
現在你需要讓每個人——你和其他人——停止使用舊鏈, MNO
如名稱branch
,並開始使用新鏈, M'-N'-O'
。 在您的Git 中,您可以刪除名稱branch
並將newbranch
重命名為branch
。 在他們的Git 中,他們必須做同樣的事情。 每個人都必須同時改變。 這往往需要大量工作。
承認過去有錯誤通常會更好。 在O
上進行新的提交以解決問題:
...--I--J
\
M--N--O--P <-- branch (HEAD)
/
...--K--L
每個人都可以像往常一樣拿起新的提交P
並繼續像往常一樣工作。 當然,提交MNO
有糟糕的快照......但那又怎樣? 壞事總是發生; 版本控制不是為了防止壞東西,而是讓你糾正它。 你已經更正了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.