如何查看 git 应用的“之前的解决方案”?

问题描述 投票:0回答:1

当挑选与之前解决的补丁具有相似分辨率的提交时,我有时会看到 git 说它试图重新应用我之前所做的事情。我相信这是 git 的

rerere
组件。

$ git cherry-pick ...
error: could not apply a123f6c424... [commit message]
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
Resolved 'path/to/file.c' using previous resolution.

问题是我不相信我之前的决定。 我怎样才能看到“之前的决议”做了什么?即只是冲突区域的差异。

我知道我可以使用以下命令完全重新进行合并。不过,我不想完全扔掉之前的工作,只是回顾和验证它。

git rerere forget path/to/file.c
git checkout -m path/to/file.c
# Resolve. e.g., git mergetool

以下问题类似,但适用于合并提交,而不是一般冲突或未提交的更改。

git merge-conflict-resolution git-merge-conflict git-rerere
1个回答
0
投票

我最近遇到了同样的问题,虽然我是重新调整而不是挑选,但我认为应该没有区别。这是一个应该有效的流程:

  • 首先,中止发生冲突的操作:

    git cherry-pick --abort
    
  • 然后,在禁用 rerere 功能的情况下重复该操作:

    git -c rerere.enabled=false cherry-pick ...
    
  • 观察冲突。

  • 手动应用记录的分辨率:

    git rerere
    

这有点乏味,但我认为它达到了你想要的。我很高兴是否有一种方法可以显示合并尝试(有冲突)与像

git show --diff-merges=remerge
这样的决议的差异,但我不确定是否有一种简单的方法可以实现这一点。

© www.soinside.com 2019 - 2024. All rights reserved.