2016-12-27 213 views
1

有沒有的做Git可以合併--squash保留提交註釋嗎?

git merge --squash mybranch 

時自動添加從壓扁mybranch提交所有提交意見的方式,以使單個提交包含所有提交的評論從mybranch

+0

你可以先在壓扁的特性分支,串聯或互動變基中重新手工的意見,然後合併擠壓分支。你打算壓縮多少次提交? –

回答

5

級聯我認爲這是什麼「git merge --squash」會自動完成!只需做「git commit --no-edit」的提交,我想這就是你會得到的。我在運行「git merge --squash」命令後立即看到.git/SQUASH_MSG中的所有提交消息。你做?

就我個人而言,我擠成了主人,但隨後強行將結果推回到我的主題分支。這樣我的最終提交可以通過拉取請求進行代碼審查。

活生生的例子(嘗試這些確切的命令,這個使用我的演示服務器,真正的作品):

git clone http://vm.bit-booster.com/bitbucket/scm/bb/rebase-example-2.git 
cd rebase-example-2 
git checkout branch 
git reset --hard origin/master 
git merge --squash origin/branch 
git commit --no-edit 

git show 
commit 74656c51212526af49382c985419244737141217 
Author: G. Sylvie Davies <[email protected]> 
Date: Mon Dec 26 22:07:50 2016 -0800 

    Squashed commit of the following: 

    commit 3120cbba4e94e0a81eed2f9ff42e7012cca996bf 
    Author: G. Sylvie Davies <[email protected]> 
    Date: Thu Dec 15 18:24:02 2016 -0800 

     b2 

    commit ccb522334464879b8f39824031c997b57303475d 
    Merge: 6b85efb 026bf0c 
    Author: G. Sylvie Davies <[email protected]> 
    Date: Thu Dec 15 18:13:35 2016 -0800 

     m 

    commit 6b85efbddbb74d49a096bfc54fd4df15e261b72f 
    Author: G. Sylvie Davies <[email protected]> 
    Date: Thu Dec 15 18:12:51 2016 -0800 

     b1 

在這一點上,我建議做一個「混帳推--force-與租賃」來獲得這個被壓縮的東西就會提交給遠程主題分支,準備好進行代碼審查。

注:我在示例中做了一件奇特的事情。我實際上是在擠壓原產地/主人,而不是當地的主人,而我首先做的是「git checkout branch」和「git reset --hard origin/master」。這使我的本地主人不受此操作的干擾,因此無論我在哪裏工作,都會一個人留下。

我在Git 2.7.4上。也許年齡較大的選手表現不同,我不知道。

如果你想在Web UI中完成這一切,並且恰好使用Atlassian Bitbucket Server(本地版本),那麼可以安裝我的Bit-Booster付費附加組件,並點擊大「Squash」按鈕它會提出拉請求。它完成同樣的事情,除了只有非合併提交消息被連接在一起。

enter image description here

+0

我傾向於不使用'git merge --squash',而只是在Git 2.10.1中測試了它,並且它在那裏的工作方式相同。 – torek

+0

'--no-edit'選項是我正在尋找的。不幸的是,該選項不可用於SourceTree中的提交,因此必須在命令行執行。當從命令行完成時,在提交之前沒有辦法編輯連接的註釋?啊,我試過TortoiseGit,它的commit會默認連接所有註釋,並允許它們在提交結果之前進行編輯。 我正在使用Git 2.10.1.windows.1 – JonN

+0

嘗試省略「--no-edit」。我確定「git commit」會預先爲你的編輯器填充相同的內容。但是,如果您更喜歡使用「--no-edit」,則可以隨時使用「git commit --amend」來調整提交消息。 –