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