[英]git: I accidentally merged feature branch into master instead of develop
我正在使用git並使用master / develop / feature分支。
母版只有README文件。 而且,不幸的是,我無意中將我正在使用的功能分支合並到了master分支中,而不是合並到了develop分支中。 並且還刪除了功能分支。
我對git知之甚少,我對該怎么辦感到困惑。 但是我認為正確的做法是將特征分支(已刪除)上的更改合並到開發中,然后將合並還原到母版中。 但是,如果我已經刪除了功能分支,該怎么辦?
請注意,我在這里假設您尚未push
合並結果。 如果有的話,這仍然可以工作,但是需要“強制推送”,這反過來會影響使用該存儲庫的其他所有人(請參閱git rebase
文檔中的“從上游重新存儲恢復”;因為這實際上就是它會造成的情況)。 但是,如果您沒有,則無需擔心任何這些。 所以:
首先是重新創建功能分支。 我假設它只在本地存在。 (如果它是在合並之前被推送的,您也許可以從遠程恢復它;但是無論哪種方式,下面的方法都會起作用。)
git checkout master
git checkout -b feature
git reset --hard HEAD^2
現在,功能分支已還原到合並提交的“第二父級”-應該在合並之前的位置。
接下來,您需要從master
刪除合並。
git checkout master
git reset --hard HEAD^
就是這樣; 您已經准備好將功能部件合並到開發分支中。
第一個使用git checkout master
checkout master分支,並從master分支創建一個名為feature
的新分支:
git checkout -b feature
再次檢出master分支,並運行以下命令:
git log
這應該列出您在master分支上的提交列表。 您需要滾動查看提交列表,以復制要還原的提交ID。 假設id為advcf456yhn8
,那么您需要編寫以下命令:
git reset --hard advcf456yhn8
這將還原所有更改,並以特定的提交ID還原為實際內容。
現在,您已經創建了一個分支feature
,可以將其合並到develop
。 只需使用git merge feature
進行git checkout develop
和合並feature
分支。
另外,通過運行以下命令,您可以獲得完整的提交歷史記錄:
git reflog
使主服務器恢復到先前提交的簡單方法:
CMD:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.