Git Filter-Branch致命修订版。

4
我正在尝试从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 for Windows命令行(最新版本),我的Git知识相当基础,但我找不到任何替代方案来实现我想要做的事情。
感谢您的帮助!
2个回答

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的帮助!


我已经提交了一个PR,它已经被合并到官方文档中以解决问题。https://github.com/git-tfs/git-tfs/pull/903 - baywet
你刚刚让我开心了一整天!! - DL Redden

0

您正在尝试执行的命令依赖于外部工具:sed可执行文件(在大多数Unix版本中默认提供,但在Windows上不提供):您可能需要自己安装sed

从这些Unix工具包中获取一个windows兼容版本的sed

  1. UnxUtils(2013年最新更新,中等大小)
  2. Cygwin(不断更新,如果您不介意大小,则是默认选择)
  3. GnuWin32(2010年最新更新)

希望这可以帮助您!


谢谢你的回答。我以为在 Windows 上安装 Git 会带一些工具(也许我在安装过程中勾选了某些错误的内容?) 这是否意味着我可以用一些等效的 PowerShell 替换它? - baywet
@baywet:这个可能可行,但没有测试过:git filter-branch -f --msg-filter '% { $_ -replace "^git-tfs-id:.*$","" }' -- --all - Giuseppe Ricupero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接