如何检索正确的提交哈希?

时间:2015-02-17 14:46:36

标签: git hashcode cherry-pick

我有一个master有一些提交,我回到第一个提交,从那里创建了一个分支并使用cherry-pick来应用master分支中的一个提交。但由于一些冲突,我得到了一条消息:

Automatic cherry-pick failed.  After resolving the conflicts,
mark the corrected paths with 'git add <paths>' or 'git rm <paths>'
and commit the result with: 

    git commit -c some_hash_id

问题是,解决冲突花了我一段时间,同时我用消息关闭了终端,现在我不知道提交解析文件时我应该使用什么提交哈希。我如何找到它?

如果我没有提供足够的详细信息,请在评论中提出要求。

编辑:

$ git status
# On branch upgrade
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   file1.php
#   new file:   file2.php
#
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      file3.php
#   both modified:      file4.php
#   both modified:      file5.php
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   [long list of files...]

file3.phpfile4.phpfile5.php是我必须解决冲突的问题。

$ git cherry-pick --continue
error: unknown option `continue'
usage: git cherry-pick [options] <commit-ish>

    -n, --no-commit       don't automatically commit
    -e, --edit            edit the commit message
    -x                    append commit name when cherry-picking
    -r                    no-op (backward compatibility)
    -s, --signoff         add Signed-off-by:
    -m, --mainline <n>    parent number
    --rerere-autoupdate   update the index with reused conflict resolution if possible
    --ff                  allow fast-forward

$ git cherry-pick --abort
error: unknown option `abort'
usage: git cherry-pick [options] <commit-ish>

    -n, --no-commit       don't automatically commit
    -e, --edit            edit the commit message
    -x                    append commit name when cherry-picking
    -r                    no-op (backward compatibility)
    -s, --signoff         add Signed-off-by:
    -m, --mainline <n>    parent number
    --rerere-autoupdate   update the index with reused conflict resolution if possible
    --ff                  allow fast-forward

但是文档说:

--continue

    Continue the operation in progress using the information in .git/sequencer. Can be used to continue after resolving conflicts in a failed cherry-pick or revert.

我没有这样的文件(我查过)所以也许我现在不能使用这些命令。

我使用的是git 1.7.1版。

1 个答案:

答案 0 :(得分:0)

Git 2.22(2019年第二季度,4年后)应该做得更好,以保持樱桃签的状态或恢复解决冲突的状态。

请参见commit 4a72486commit b07d9bfPhillip Wood (phillipwood)(2019年4月16日)。
(由Junio C Hamano -- gitster --commit b51a0fd中合并,2019年5月13日)

  提交后

修复cherry-pick / revert状态

     

如果用户在一系列的樱桃/还原操作中间使用git commit提交了一个冲突解决方案,那么git status会错过仍然在进行樱桃/还原操作的事实。< / p>

并且:

  

commit / reset:尝试清理音序器状态

     

选择或还原提交序列时以及最终   选择/还原有冲突,并且用户使用git commit提交   解决冲突,然后不运行git cherry-pick --continue   音序器状态被留下。

     

稍后可能会导致问题。

     

就我而言,我挑选了一系列提交,最后一个提交   解决了一些冲突后,使用git commit进行了承诺   后来,在另一个分支上,我中止了还原,从而将HEAD倒退到   前一个分支上的Cherry-pick序列的结尾。

     

如果要提交或删除定序器状态,则可以避免此潜在问题   按顺序重置最终选择。