[英]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.