簡體   English   中英

按提交順序進行Git簽出

[英]Git checkout by commit order

當我使用Git checkout master〜X時,我將獲得第X個合並的提交,我真正想要的是第X個實際的提交(不僅限於合並的提交)。

我怎樣才能做到這一點?

謝謝。

嘗試如下操作:

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

--skip=2更改為要跳過的非合並提交的數量。 如果要進行第一次非合並提交,請使用--skip=0 第二個非合並提交,使用--skip=1 第三,使用--skip=2 ; 等等


您可以設置別名(使用此答案作為指導):

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

您可以使用以下內容獲得不是合並提交的提交列表:

git log --no-merges

在該列表中,只需將第X個結果作為checkout

對於您的用例,還可以使用--online標志,因為簡短顯示應該足夠了。

合並提交可以用rebase代替。 查看這篇文章 但是,它僅對將來的分支機構有影響。

暫無
暫無

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

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