2012-02-14 150 views
1

當我使用Git checkout master〜X時,我將得到第X個合併提交,我真的想要的是第X個真實提交(不是合併提交)。通過提交命令的Git結賬

我該怎麼做?

謝謝。

回答

1

嘗試類似如下:

git checkout $(git log --no-merges --skip=2 -1 --format='%H') 

變化--skip=2非合併的數量提交你想跳過。如果您想要進行第一次非合併提交,請使用--skip=0;第二次非合併提交,使用--skip=1;第三,使用--skip=2;等


你可以建立一個別名(使用this answer作爲指導):

git config alias.co-non-merge '!git_co_non_merge() { git checkout `git log --no-merges --skip=$(($1 - 1)) -1 --format="%H"` ; } ; git_co_non_merge' 

添加--global,使之成爲全球配置更改。那麼你可以使用git co-non-merge X

+0

「合併提交」也是「提交」,雖然,不是嗎? – nickgrim 2012-02-14 16:41:07

+0

絕對正確;感謝銳利的眼睛。 – 2012-02-14 17:10:52

0

你可以讓那些沒有合併提交使用

git log --no-merges 

在該列表提交列表,簡單地採取第X結果做checkout

對於您的用例,--online標誌可以額外使用,因爲短顯示器應該足夠了。

0

合併提交可以用rebase替代。檢查這article了。但它只對未來的分支有影響。