簡體   English   中英

使用git merge --squash將master先前合並到dev中時將development合並到master中?

[英]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 developgit log ,並且如果您是唯一在該分支上工作過的人,則應該只看到截止日期的提交-在這種情況下,您可以直接進行git merge --squash develop ,它將把develop分支所做的所有提交並git merge --squash develop到一個分支中。

如果您也有其他人在此develop分支上工作 ,並且他們的提交也在您之間,並且您只想壓縮您的提交,則執行git rebase -i ,在其中您可以通過替換來選擇要壓縮的提交相應單詞前面的單詞'pick'帶有'squash'

或者,您可以按照此處列出的第一種方法進行操作。

將功能分支中的多個提交轉換為單個提交的最簡單方法是,重置主節點中的功能分支更改,然后再次提交-一切都作為一個。

如果您使用git merge develop --squashdevelop分支合並到master ,它將不會將提交提交壓到develop分支上,而是在master分支上創建一個“ merge commit”。 通過下圖說明:

假設原來提交歷史(合並前developmaster ):

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 ,然后編輯要壁球(改變提交dropsquash在交互式窗口)。

暫無
暫無

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

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