对于无法访问我们的TFS的远程工作者,我们使用git tfs克隆了一个TFS存储库。当我们回到他的存储库时,我们看到他在一个新的功能分支上工作。
在尝试更改他的更改之前,我们将其功能分支合并到主分支中。由于他没有提交任何东西,所以发生了快进,导致单个流git日志。 不幸的是,由于最初的克隆另一个(完全不相关)签入发生在TFS上。 当我们尝试rcheckin时,我们收到以下错误消息:
Fetching changes from TFS to minimize possibility of late conflict...
error: New TFS changesets were found.
You may be able to resolve this problem.
- Try to rebase HEAD onto latest TFS checkin and repeat rcheckin or alternatively checkin s
如果我们需要所有提交反映为TFS的签到,我不明白建议的rebase如何帮助。
在这种情况下,有没有办法让所有git提交作为单独的TFS签到?
答案 0 :(得分:2)
@Cupcake的答案很好,但我想补充一些东西......
如果您想在签入时更接近tfs工作流程并在此步骤中解决合并冲突,您可以使用:
git tfs rcheckin --quick --autorebase
相当于:
git tfs pull --rebase
git tfs rcheckin
这不一定是更好的事情,因为通常在pull --rebase
(您的更改和来自tfs的那个'合并')和rcheckin
(您将更改推送到的地方)之间tfs),你至少应该构建你的解决方案并运行你的单元测试。
但我认识到有时它会更容易,而我的团队(所有旧的tfs用户)只想这样做!
您还应该知道,在pull --rebase
步骤期间,您的更改将与您的团队合并',以便合并在文件级别完成,就像您在签入时使用tfs一样必须解决冲突。
对于rcheckin --quick --autorebase
,如果存在冲突,则命令将退出。你将不得不解决它们并再次执行命令。
答案 1 :(得分:1)
您可以简单地执行插件所说的内容,并在TFS的新更改之上重新定义git repo的master
版本,其中包含远程工作者的工作。 rebase将保留原始提交的顺序......但如果存在冲突,则必须在发生冲突的提交中解决这些冲突。
git tfs pull --rebase
git tfs rcheckin
您也可以使用git tfs fetch
然后使用git的原生rebase工具来执行此操作,但这将涉及更多步骤... git-tfs命令应该为您处理所有这些。
另外,为了防万一,出于某种原因,rebase最终会给你一个你不想要的结果,在master
的尖端放一个你可以硬重置的临时分支,如果你需要:
git branch temp master
git tfs pull --rebase
# In case you don't like the rebase results:
git reset --hard temp
# Or if you like the results, check-in
git tfs rcheckin