簡體   English   中英

如何在完全保留分支歷史記錄的同時將分支狀態重置為 master?

[英]How to reset branch state to master while completely preserving branch history?

本質上,我想將我的分支狀態重置為 master 而不刪除其歷史記錄並且不附加 master 的歷史記錄。 我想在一次提交中重置分支的狀態。

假設master處於狀態 A. branch處於狀態 B. master有提交<X1> , <X2> , <X3> , ... , <X(N-2)> , <X(N-1)> , <X(N)> branch有提交<X(N-2+1)> , <X(N-2+2)>因為它是在master仍然在<X(N-2)>

(1)我希望branch匹配<X(N)>處的狀態,而無需將<X(N-2)><X(N-1)><X(N)>附加到我的提交歷史記錄中。 (2)此外,我希望我的branch差異顯示 0 個文件已更改。 我只想要一個新的提交<X(N-2+3)><X(N)>狀態完全替換我的分支狀態。

為了做到這一點,我想用<X(N)>狀態替換我所有的本地更改,並在沒有 --force 的情況下推送。 我一直無法在沒有(1)(2)的副作用的情況下在線找到這種事情的解決方案,並且不得不強制推動這對我來說似乎很危險。

嗯...我想你可以

git checkout branch
git rm -r :/:
git checkout master -- :/:
git add :/:
git commit -m "reset state to match master"

我不確定您對diff意思,但是鑒於您已經描述了目標狀態,因此diff是給定的 - 這將是您描述的狀態與您要比較的狀態之間的差異diff

您可以在branchmaster之間創建一個差異,並將其作為單個提交應用到branch

git diff --binary HEAD..master | git apply --index

這將更新工作目錄和索引。 然后你可以git commit新狀態。

暫無
暫無

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

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