git-tfs – 当git tfs无法创建合并提交时,如何更正它

当git tfs无法创建合并提交时,它说

警告:此变更集7504是合并变更集.但它无法相应地进行管理,因为父变更集7494中的一个不存在于存储库中!如果您想这样做,请在重试之前获取包含此变更集的分支…

根据documentation,注意:如果您看到警告,则可以通过将tfs远程重置为先前的提交来纠正此问题.然后获取合并的分支并重试以获取分支.

谁能请详细说明将tfs远程重置为先前的提交.虽然,我现在已经获取了合并的分支,但我不明白如何将其重置为先前提交给失败的分支.我不确定,但我必须git checkout ?

最佳答案 是的,现在git-tfs在遇到合并变更集时尝试创建合并提交(现在它具有令人满意的分支支持).

此消息只是一条警告消息,当您看到它时,您有2个选项…

>第一个是什么都不做,因为你知道它是一个旧的功能分支,你永远不会在那里工作,更重要的是,将来你永远不会再在你的父分支中合并.
>第二个是如果你真的想要这个合并提交.因为您需要良好的历史记录或更重要,因为您仍然在此分支上工作,并且必须将其合并到父分支中.

要做到这一点,你将不得不重置你的tfs远程(因为事实上已经创建了提交 – 以保持与以前版本中git-tfs的工作方式兼容,以及那些不能与分支一起工作的那些 – ).

要重置远程,必须使用reset-remote命令.

然后将在父分支中合并的分支与branch –init初始化.

将本地分支重置为tfs远程(由于内部git-tfs优化).

并再次获取父分支.现在合并的分支存在并且是fetch,git-tfs将从合并的分支中找到父变更集,并且您将在git存储库中有一个漂亮的合并提交;)

所以,如果你之前做过这件事

git tfs clone https://CompanyName.visualstudio.com/DefaultCollection "$/CompanyName/Main" KfGitMain --workspace="C:\TFS\Main"
cd GitMain
git tfs branch --init "$/CompanyName/Release/20140121.1" live20140121.1
git tfs branch --init "$/CompanyName/Release/20140121.1-hotfix" hotfix20140121.1

如果由于代码相互合并而收到所有三个警告,那么你必须这样做

git checkout hotfix
git tfs reset-remote 5fb83335b8dfc6fbb96e0a54a48dc06c506e3277 ## previous commit of the first failed commit
git reset --hard tfs/hotfix
git tfs pull -i hotfix

git checkout live
git tfs reset-remote eba62a1446f3f81676d051336ca254fe54c37d74
git reset --hard tfs/live
git tfs pull -i live

git checkout master
git tfs reset-remote 72727737ec52f9b96d22d343770186a342c8b166
git reset --hard tfs/default
git tfs pull -i default

注意:如果你没有太多的分支和/或奇怪的tfs历史记录,那么使用带有选项–with-branches的git clone可以避免所有这些,它将初始化并获取所有分支来处理合并变更集

点赞