git filter分支致命修订版

时间:2016-01-08 15:19:59

标签: regex git azure-devops commit git-tfs

我尝试从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)和一些在线博客文章。

一切都像魅力一样,除非我尝试清理提交消息时我得到了一个"致命:错误的修订版本s / ^ git-tfs-id:。* $ // g"使用doc中的命令 git filter-branch -f --msg-filter 'sed "s/^git-tfs-id:.*$//g"' -- --all

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

最后发现实际问题是什么......报价问题 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的帮助!

答案 1 :(得分:0)

您尝试执行的命令依赖于外部工具:sed可执行文件(默认情况下在大多数unix风格上可用,但在Windows上不可用):可能您必须在您的上安装sed拥有。

从其中一个unix-tools软件包中获取windows-compatible版本的sed

  1. UnxUtils(2013年最新更新,中等规模)
  2. Cygwin(不断更新,默认选择,如果你不介意大小)
  3. GnuWin32(2010年最新更新)
  4. 希望这有帮助!