git 过滤分支致命修订

git filter branch fatal revision

我正在尝试从 TFVC(Visual Studio Team Services)迁移到 git(通过 Visual Studio Team Services 托管)。我已经能够构建一个脚本来迁移所有的东西、分支、做一些清理等。 我使用了 git tfs (https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/migrate_tfs_to_git.md) 和一些在线博客文章。

一切都很顺利,除了当我尝试清理提交消息时,我使用文档中的命令得到 "fatal: bad revision s/^git-tfs-id:.*$//g" git filter-branch -f --msg-filter 'sed "s/^git-tfs-id:.*$//g"' -- --all

我一直在尝试使用正则表达式,它并没有解决问题。在网上搜索了很多之后,我仍然不明白为什么它不能正常工作。 我将 git 用于 windows 命令行(最新版本),我对 git 的了解非常基础,但我找不到任何替代方法来实现我想做的事情。

感谢您的帮助!

您尝试执行的命令依赖于外部工具:sed 可执行文件(默认情况下在大多数 unix 版本上可用,但在 windows 上不可用):可能您必须安装 sed 靠自己。

从这些 unix-tools 捆绑包中获取 windows-compatible 版本的 sed

  1. UnxUtils(2013 年最新更新,中号)
  2. Cygwin(持续更新,不介意尺寸的默认选择)
  3. GnuWin32(2010 年最新更新)

希望对您有所帮助!

终于找到了真正的问题所在...报价问题 git filter-branch -f --msg-filter 'sed "s/git-tfs-id:.*//gm"' -- --all
不起作用 git filter-branch -f --msg-filter "sed 's/git-tfs-id:.*//gm'" -- --all 作品

我猜 windows 命令行和 Git 虚拟 bash.

引号的解释之间存在兼容性问题

无论如何感谢@Giuseppe Ricupero 的帮助!