【问题标题】:Preserve git notes when rewriting history with git filter branch使用 git filter 分支重写历史记录时保留 git 注释
【发布时间】:2014-10-28 15:33:37
【问题描述】:

由于某些原因,我必须重写我的 git 存储库的整个历史记录以更改每个提交的 committer_id。但是,我或多或少地在每个提交上附加了一个注释,并且使用 git-filter-branch 更改 committer_id 将在逻辑上创建新的提交,而将注释留在后面。 有没有办法将注释复制到匹配的新提交中?

这个thread 似乎提出了类似的问题,但在 2011 年没有解决方案。

感谢您的帮助!

【问题讨论】:

  • 您有 OLD_SHA->NEW_SHA 的列表吗?或者也许因为你只是改变 GIT_COMMITTER_NAME 你可以git rev-list orig refs和replacement refs并得到它?一个你有旧的->新的 sha 映射问题应该是微不足道的。
  • 好主意,我没有这样考虑过。谢谢!

标签: git git-filter-branch git-notes


【解决方案1】:

问题可能是 git-notes 需要一些额外的配置才能按照您想要的方式工作。你可能需要这个配置变量

git config notes.rewriteRef refs/notes/commits

来自文档: https://git-scm.com/docs/git-notes#git-notes-notesrewriteRef:

GIT_NOTES_REWRITE_REF

重写提交时,从哪些注释中复制 重写提交的原件。必须是冒号分隔的列表 refs 或 glob 的数量。

如果没有在环境中设置,则要复制的笔记列表取决于 notes.rewrite。和 notes.rewriteRef 设置。

基本上,Git 必须获得您的许可才能将注释从原始提交转移到您正在重写的新提交。您还可以查看这个 Stackoverflow 线程以获得更长的解释:

Is there a way to automatically merge notes if commits for those notes get squashed?

【讨论】:

  • 没用,但git config --global notes.rewriteRef refs/notes/commits 没用。
猜你喜欢
  • 2011-04-22
  • 1970-01-01
  • 2020-05-30
  • 2015-10-19
  • 1970-01-01
  • 2013-10-28
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多