簡體   English   中英

是否可以將解決方案修改為 git 中的合並沖突?

[英]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

是當前的情況,即通過JL現有提交合並為M ,並且您和他們已經在M之上構建了NO 您現在發現由於某些沖突的錯誤解決,存儲在合並提交M中的快照中存在“錯誤”。

制作M的更正版本的唯一方法是進行新的合並提交, M' (有幾種方法可以做到這一點。)結果是:

...--I--J__
        |  \
        |   M--N--O   <-- branch
         \ /
          x
         / \
...--K--L---M'  <-- newbranch (HEAD)

也就是說,即使您現在在這個新的替換分支newbranch上進行了新的和改進的合並M' ,錯誤合並M仍然存在 您現在還需要將NO復制到新的和改進的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.

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