簡體   English   中英

git:我不小心將功能分支合並到master中,而不是進行合並

[英]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

使主服務器恢復到先前提交的簡單方法:

  1. 克隆您的主存儲庫
  2. 如果您在git上使用任何GUI,請使用選項“還原”來選擇特定的提交ID
  3. 恢復后,請提交並推送到主服務器。

CMD:

  1. git克隆大師
  2. git reset --hard HEAD ^
  3. git commit -m“”
  4. git推

暫無
暫無

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

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