撤消或还原 git am --resolved
undo or revert git am --resolved
我正在手动应用补丁,完成后我做了以下操作
git add .
git am --resolved
我忽略了 rej 文件也存在但未被跟踪的部分,但是 git add .
按预期将所有文件添加到暂存区并且 git am --resolved
我最终提交了我的 rej 文件其中有补丁差异。
我做了一个 git reset --soft HEAD^
所以我可以恢复提交并只提交补丁修改的文件。
但现在的问题是提交消息和作者不会再从补丁文件中提取,因为我做了 git 提交。
如何撤消已解决的 git 以便我可以删除 rej 文件并再次解决以便提交消息和作者完好无损?
你完全可以做到
git filter-branch --tree-filter 'rm rejfile' HEAD^..
现在你必须return到错误提交的状态
git reset --soft HEAD@{1}
然后 运行 来自上面的 git filter-branch
命令。
听起来补丁中只有一个提交。
最简单的方法在这种情况下(仅一次提交)是 git reset
返回 到不正确的提交,然后删除多余的文件 (git rm ...
) 并使用 git commit --amend
。 --amend
选项告诉 git commit
重新使用现有的消息和作者,并从当前索引进行新提交,将旧提交推到一边。
如果有多个提交,都包含 .rej
文件,您将需要使用 或类似的东西(例如,更长的手动变基)。您可能希望限制 git filter-branch
复制的提交集,因为过滤会复制每个此类提交,这非常慢。
如 Leon 所说,要重置回不正确的提交,请使用 git reset --soft HEAD@{1}
。
我正在手动应用补丁,完成后我做了以下操作
git add .
git am --resolved
我忽略了 rej 文件也存在但未被跟踪的部分,但是 git add .
按预期将所有文件添加到暂存区并且 git am --resolved
我最终提交了我的 rej 文件其中有补丁差异。
我做了一个 git reset --soft HEAD^
所以我可以恢复提交并只提交补丁修改的文件。
但现在的问题是提交消息和作者不会再从补丁文件中提取,因为我做了 git 提交。
如何撤消已解决的 git 以便我可以删除 rej 文件并再次解决以便提交消息和作者完好无损?
你完全可以做到
git filter-branch --tree-filter 'rm rejfile' HEAD^..
现在你必须return到错误提交的状态
git reset --soft HEAD@{1}
然后 运行 来自上面的 git filter-branch
命令。
听起来补丁中只有一个提交。
最简单的方法在这种情况下(仅一次提交)是 git reset
返回 到不正确的提交,然后删除多余的文件 (git rm ...
) 并使用 git commit --amend
。 --amend
选项告诉 git commit
重新使用现有的消息和作者,并从当前索引进行新提交,将旧提交推到一边。
如果有多个提交,都包含 .rej
文件,您将需要使用 git filter-branch
复制的提交集,因为过滤会复制每个此类提交,这非常慢。
如 Leon 所说,要重置回不正确的提交,请使用 git reset --soft HEAD@{1}
。