2017-02-18 31 views
0

所以我想通過使用git log master --merges -1我可以得到最新的合併。我想更進一步,只從最新的合併到最後的提交。如何做到這一點?如何獲得最新的合併提交git中的一個分支

例如,假設我有master,staging,feature1feature2分支。我將feature1合併爲staging,然後合併爲master。然後,我會在feature2之後做同樣的事情。如何在合併feature2之間發生這種情況?

+0

你問過「孩子提交」,但你的例子和接受的答案似乎是尋找*父母*提交,這是相當簡單(和xarthnax的答案是正確的)。如果您繪製提交圖,概念會變得更清晰。語法'A..B'的意思是「讓我從'B'開始找到所有提交併通過它的歷史回溯;然後,從那個列表中*丟棄*從'A開始可以找到的任何提交併且回顧它的歷史。「 – torek

+0

@torek我相信你是對的,對不起。讓我編輯我的問題,以供未來尋找此問題的人使用。 –

回答

0

git log master --merges -1之後,查看該合併的兩個父提交。然後發出git log <parent1>..<parent2> --right-only --no-merges --format=format:%H以列出來自feature2分支的提交。

+0

感謝你的這一點,它非常簡單,我認爲這個問題的答案不會太過沉重。 –

+0

'--right-only'只有對稱差異才有意義,'commit1 ... commit2'(三個點)。僅使用兩個點時,應該使用或不使用「--right-only」來得到相同的結果。 – torek

0

你試過了--children的標誌嗎?

git log master --children --merges -1 

或者你可以嘗試

https://gist.github.com/kohsuke/7590246

+0

我給了它一個鏡頭,但該命令似乎只給予主人的最新合併,並不包括任何孩子。 –

+0

你可以試試[kohsuke的方法git-children-of](https://gist.github.com/kohsuke/7590246)。你只需要管理你的第一個命令的結果。 –

0

git log -1 --merges --pretty=format:"%H"給你的最後一個合併提交SHA。

您可以使用此SHA來篩選git rev-list --all --children的輸出,並將結果限制爲其父項爲給定SHA1的提交。

COMMIT=`git log -1 --merges --pretty=format:"%H"` 
git rev-list --all --children | grep "^${COMMIT}" | cut -f2 -d' ' 

git-rev-list documentation

--children 打印也提交(其形式爲 「提交的孩子......」)的兒童。

因此grep "^${COMMIT}"將確保輸出將是以上次合併提交開始的行。

相關問題