通过提交订单进行Git结账

时间:2012-02-14 12:55:23

标签: git commit git-checkout

当我使用Git checkout master~X时,我将获得Xth合并提交,我真的 want是第X个实际提交(仅限合并提交)。

我该怎么做?

感谢。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以使用

获取没有合并提交的提交列表
git log --no-merges

在该列表中,只需取第X个结果即可checkout

对于您的用例,可以另外使用--online标志,因为短显示应该足够了。

答案 2 :(得分:0)

合并提交可以用rebase替换。检查此article。但它只对未来的分支有影响。