GitHub的「壓扁和合並」按鈕始終創建一個新的提交,該提交包含在拉取請求中應用每個提交的結果。 (更準確地說,它會創建一個新的提交,它使用合併行動 - 「合併爲動詞」,但是讓一個普通的,非合併提交這也是什麼命令行git merge --squash
一樣。)
當有一個只有一個在提交請求中提交,這使得一個提交的副本。
如果有兩次提交你:
* (upstream/feature) the squash commit that is not a merge
| * (feature, origin/feature) commit 2
| * commit 1
|/
* the common base across your GitHub repo and their GitHub repo
注意,如果上游回購使用真實的合併,曲線幾乎是一樣的,只不過它的內容:
* (upstream/feature) the merge commit that IS a merge
|\
| * (feature, origin/feature) commit 2
| * commit 1
|/
* the common base across your GitHub repo and their GitHub repo
無論哪種方式,如果你打算使用合併或合併(即不合並,但是壓扁)提交,你應該移動你自己的分支來指向他們的提交,並忘記你的一系列提交。如果上游人員進行了壁球合併,這可能很困難:您必須得到整個球隊的放棄他們的feature
版本並切換到上游的feature
,的提示提交,即使這意味着失去您自己的提交。如果上游人員確實合併了您的提交,則更容易:您可以簡單地允許Git從feature
的頂端向上遊feature
執行不實際合併的快速「合併」。
謝謝,torek,這似乎是真的。我想我現在可以重置我的分支到'upstream/feature',但是我想知道在壓縮和合並請求之後是否與傳統的上游同步?我想這就是你在這裏提出的建議_你應該把你自己的分支指向他們的提交,並忘記你所有提交的系列_ –
_如果上游的人確實合併了你的提交,那就容易多了:你可以簡單地讓Git來執行從功能的頂端到上游功能的一個不實際合併的快速「合併」._ - 是的,這正是我所期望的,是本地快速合併。我猜如果我在壓縮和合並之後只是簡單的'git pull',我會在我的本地'特性'分支上得到一個**多餘的**合併提交。使用github的壓縮和合並拉取請求工作流程的常規方法是什麼? –
對,如果你做了一個提取和合並(aka'git pull'),你會得到你自己的冗餘合併坐在他們的壓扁合併和你自己的提交。但是,除非上游以及提出請求的人(「下游」?:-)),否則您無法控制上游人員的行爲。在我目前的$工作中,我們實際上是這個等式的「雙方」(我們使用付費的GitHub賬戶進行私人回購),我們根據與自己的協調來做出不同的合併選擇:有時壓縮,有時合併,呃必須重建提交系列。 – torek