Git 显示变基时旧已解决提交的合并冲突
Git shows merge conflicts on old resolved commit while rebasing
我有一个现有的回购协议,我需要更改所有提交的所有作者电子邮件(我是唯一一个在该回购协议上工作的人)。
git rebase --root --exec 'git commit --amend --author="Arthur ATTOUT <new.email@company.com>" --no-edit'
虽然前 ~100 次提交得到了正确处理,但在特定提交时,git 吓坏了并抱怨存在冲突
error: could not apply 0709cb2... Unit32 default value watermark
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 0709cb2... Unit32 default value watermark
Auto-merging ViewModels/ViewModels/DataprepControl.cs
CONFLICT (content): Merge conflict in ViewModels/ViewModels/DataprepControl.cs
me@home MINGW64 ~/source/repos/soft (dev|REBASE-i 129/320)
为什么 git 突然意识到那些超旧的提交存在冲突?变基不应该考虑我当时应用的冲突解决方案吗?
您似乎想要重写您的存储库的完整历史记录,以修复现有提交的作者字段。
为此,请使用批量重写工具,例如 git filter-repo
或较旧的 git filter-branch
。
[编辑]
我最初建议使用 git rebase [-r|--rebase-merges]
重播过去的合并,并且
我(错误地)认为它使用现有合并提交的结果来重新创建合并内容,
但@MarkAdelsberger 正确地报告说 git rebase -r
完全重新运行合并,并将重新触发合并冲突。
正如@MarkAdelsberger 所说,最好的建议是不要通过合并使用 git rebase
。
这可能是因为您要变基的不是单个线性分支,而是包含多个合并点的分支(来自已集成到主分支中的附件分支)。
当 运行 您启动命令时,Git 会将他能找到的所有提交清除回您存储库的根目录,然后一一重新应用它们,但 不会保留结构。然后,您将放弃到目前为止必须执行的所有合并决议。
您可能想看看 git filter-branch
。
此外,如果您想将所有作者重置为默认作者(您),请考虑改用 --reset--author
,它不需要传递参数。
我有一个现有的回购协议,我需要更改所有提交的所有作者电子邮件(我是唯一一个在该回购协议上工作的人)。
git rebase --root --exec 'git commit --amend --author="Arthur ATTOUT <new.email@company.com>" --no-edit'
虽然前 ~100 次提交得到了正确处理,但在特定提交时,git 吓坏了并抱怨存在冲突
error: could not apply 0709cb2... Unit32 default value watermark
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 0709cb2... Unit32 default value watermark
Auto-merging ViewModels/ViewModels/DataprepControl.cs
CONFLICT (content): Merge conflict in ViewModels/ViewModels/DataprepControl.cs
me@home MINGW64 ~/source/repos/soft (dev|REBASE-i 129/320)
为什么 git 突然意识到那些超旧的提交存在冲突?变基不应该考虑我当时应用的冲突解决方案吗?
您似乎想要重写您的存储库的完整历史记录,以修复现有提交的作者字段。
为此,请使用批量重写工具,例如 git filter-repo
或较旧的 git filter-branch
。
[编辑]
我最初建议使用 git rebase [-r|--rebase-merges]
重播过去的合并,并且
我(错误地)认为它使用现有合并提交的结果来重新创建合并内容,
但@MarkAdelsberger 正确地报告说 git rebase -r
完全重新运行合并,并将重新触发合并冲突。
正如@MarkAdelsberger 所说,最好的建议是不要通过合并使用 git rebase
。
这可能是因为您要变基的不是单个线性分支,而是包含多个合并点的分支(来自已集成到主分支中的附件分支)。
当 运行 您启动命令时,Git 会将他能找到的所有提交清除回您存储库的根目录,然后一一重新应用它们,但 不会保留结构。然后,您将放弃到目前为止必须执行的所有合并决议。
您可能想看看 git filter-branch
。
此外,如果您想将所有作者重置为默认作者(您),请考虑改用 --reset--author
,它不需要传递参数。