[英]Using git merge --squash to merge develop into master when master was previously merged into develop?
我有兩個分支。 我的主分支和我的功能分支。
我正在功能分支上進行開發,並在那里進行了幾次提交,並將其推送到遠程。 我不時地將master分支合並到我的developer分支中,以確保獲得最新的更改。
現在,我已經完成了develop分支上的開發工作,並希望將develop分支合並到master分支中。
理想情況下,我想將develop分支上的所有提交壓縮為一個提交。 我想我可以做到
git merge --squash
但是,當我不時將master合並到development中時,我仍然可以這樣做嗎?
您已不時將master
合並到develop
-是說您已不時在本地倉庫中更新了master
分支並使用master
分支中的更改來develop
分支,對嗎?
在這種情況下,當您進行git checkout develop
和git log
,並且如果您是唯一在該分支上工作過的人,則應該只看到截止日期的提交-在這種情況下,您可以直接進行git merge --squash develop
,它將把develop
分支所做的所有提交並git merge --squash develop
到一個分支中。
如果您也有其他人在此develop
分支上工作 ,並且他們的提交也在您之間,並且您只想壓縮您的提交,則執行git rebase -i
,在其中您可以通過替換來選擇要壓縮的提交相應單詞前面的單詞'pick'帶有'squash' 。
或者,您可以按照此處列出的第一種方法進行操作。
將功能分支中的多個提交轉換為單個提交的最簡單方法是,重置主節點中的功能分支更改,然后再次提交-一切都作為一個。
如果您使用git merge develop --squash
將develop
分支合並到master
,它將不會將提交提交壓到develop
分支上,而是在master分支上創建一個“ merge commit”。 通過下圖說明:
假設原來提交歷史(合並前develop
成master
):
A---B---F---G master
\
…---C---D---E develop
在執行git merge develop --squash
,新的提交H
就像您進行真正的合並一樣,將更改從develop
分支更改為master
。
A---B---F---G---H master
\
…---C---D---E develop
因此,您可以將master
合並到develop
,然后將develop
分支合並回master
分支。 但這不是推薦的方法。 您應僅將一個分支視為主分支 (例如,將master
分支視為主分支)。 當另一個分支( develop
)具有新功能/更改時,您只需要將develop
合並到master
分支即可。 當稍后在develop
分支上進行其他新更改時,您僅需要不時將develop
分支合並到master
分支中。
如果你只是想壁球犯下的develop
分支,可以使用git rebase -i develop~n
,然后編輯要壁球(改變提交drop
到squash
在交互式窗口)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.