簡體   English   中英

合並后Git提交消失了

[英]Git commit disappeared after merge

我正在與一些協作者合作進行一個項目,每個協作者都有master分支的遠程副本,該副本可能與原始master分支有關,也可能沒有。

假設其中一個協作者由於提交X而提交了一個過時的副本,提交了一些Y並嘗試將其推到origin分支。 它失敗,並且協作者合並更改並再次成功推送,這一次成功。

現在,當查看存儲庫的歷史記錄時,不再可以找到提交X ,除了它的更改現在位於另一個名為Merge branch 'master' of https://....提交中。

這是git的正常行為嗎? 這使得很難跟蹤更改。 有什么辦法可以避免這個問題?

提前致謝!

當使用git merge時,這對於Git來說是完全正常的行為。 Git merge將源分支中的提交替換為目標分支中的單個合並提交。

保留歷史記錄的一種方法是改用git rebase 在重新設置基礎時,您的協作者將首先從遠程master分支引入更改,然后再重新提交其工作。 這會將他的本地master置於遠程控制之前,而他只需將其更改推入即可。請考慮下圖:

remote: A -- B -- C -- X
local:  A -- B -- C -- Y

在執行git rebase origin/master該圖將如下所示:

remote: A -- B -- C -- X
local:  A -- B -- C -- X -- Y'

其中Y'是您的協作者的原始Y提交,略有修改。 現在,您的協作者處於令人羡慕的位置,可以將其工作直接推到遠程master分支上。 從其master分支執行git push origin master之后,該圖將如下所示:

remote: A -- B -- C -- X -- Y'
local:  A -- B -- C -- X -- Y'

現在,您的協作者的提交在遠程master分支中完整顯示。

暫無
暫無

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

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