[英]Git: how to go back before merge
謝謝你的幫助。 我真的很困惑......
我合並了隊友的拉請求。
現在我想回到合並之前的情況,因為我已經意識到引入了錯誤。 拉請求是由朋友在24上完成的,我在24上做了合並。
謝謝!!!
commit ff1e9ecfa13c5050957b77bd5b5695d802415867
Merge: 053c894 437e11c
Author: me
Date: Tue Mar 24 09:06:11 2015 +0100
Merged ' changes on xxx
commit 437e11c23ae7da68f8bb3698557bdc2aa3d9a614
Merge: a129401 adfd8c5
Author: someone else
Date: Tue Mar 24 00:00:18 2015 +1000
Merge pull request #17 from
xxx
commit adfd8c5c30541095ee48ce64da14740f92594ec8
Author: someone else
Date: Mon Mar 23 23:54:06 2015 +1000
xx
commit 053c89426460ffaa86873bed342bc38e24a13096
Merge: 849ec63 35fdbc6
Author: me
Date: Fri Mar 20 07:57:13 2015 +0100
假設您沒有刪除原始更改出現的分支,那么您的隊友的工作仍然位於該分支上,所以只要您仍然擁有更改所在的分支,我就不會擔心會丟失這些更改制作。
您可以執行git reset --hard [commit hash]
以在合並之前返回提交,這就像回到過去一樣。 但是,您還將撤消在reset
命令中指定的提交后添加的任何更改(如果有)。
例如:
在我當前的分支上,我有以下提交:
A
|
B <- commit *before* the merge
|
|
| --- some other branch
| /
|/
C <- commit where "some other branch" was merged into current branch
|
D
|
E
如果我執行git reset --hard B
那么我將在C
merge
之前返回提交。 但是我也會在這個過程中丟失承諾D
和E
一旦你這樣做,只需檢查分支的狀態,並確保它看起來像你需要它,然后執行git push --force
,它將遠程倉庫更新為此狀態。 你需要的原因--force
是因為你將從遠程倉庫的當前分支中刪除提交D
和E
,如果沒有--force
選項, git
將不允許你這樣做,因為你要求它刪除工作。
根據這些更改的實質程度,有時更容易前滾並修復錯誤,而不是嘗試撤消更改。 那條線(前進或后退)是個案決定。
您的隊友的提交都在您的存儲庫中,以及您所做的合並提交。 您可以將標簽放回合並之前的位置,如果您希望將來引用您的隊友提交,請添加新標簽。
這樣的事,對吧? 我想我的標簽足夠接近:
...053---ff1 master
/
...a17---437 teammate
/
...adf other
要重置標簽,如果您最近的結帳不是master
您只需將標簽強制到新的位置即可。 否則,您必須先檢查另一個引用(或普通提交)或結帳。
你想讓master回到合並的第一個父級,並且檢查它也不會那么糟糕,所以:
git tag wip
git checkout -B master master^1
現在master
指的是053
, wip
指的是ff1
,沒有別的改變。 wip
參考讓git知道你還在引用它及其歷史。 你已經在合並簽出之前獲得了master
提交,而master
又回到了引用它。 force-relabel-and-checkout git checkout -B $commit $ref
有一個快捷方式,如果你正在移動當前的結賬, git reset --hard $ref
。
如果您沒有或希望主簽出:
git branch -f master master^1
並且跳過所有工作樹流失。
如果您移動標簽並且您意識到您確實應該首先標記舊提交,您可以通過reflogs(標簽的上一個目標或之前的結帳)來引用它,具體取決於: git tag wip @{1}
來標記您之前的標簽worktree commit和git tag wip master@{1}
標記以前的master
提交。 git revisions
顯示了你可以引用提交的所有方法,從你可能猜到的人數來看,人們最終不會打擾臨時名稱而只是直接參考機上工作所使用的提交,這是完全正確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.