![](/img/trans.png)
[英]GIT: How to overwrite QA branch with Master, preserving QA branch history?
[英]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
。
您可以在branch
和master
之間創建一個差異,並將其作為單個提交應用到branch
:
git diff --binary HEAD..master | git apply --index
這將更新工作目錄和索引。 然后你可以git commit
新狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.