0

到目前为止我成功地做了什么:

  • git tfs clone 从我在 TFS 的主分支。
  • 将此 repo 推送到我的 bitbucket 帐户。
  • 在本地创建了一个分支(git checkout -b testbranch)
  • 在 TFS 上创建了相同的分支(git tfs branch $/Repo/testbranch)
  • 对测试进行了一些更改,并且仅在 git 上提交(git add,git commit on testbranch)。没有将它们推送到 bitbucket。

现在有什么问题:

执行:git tfs rcheckin,结果我将更改签入到 TFS 上的主分支(我想签入到 testbranch)

尝试: git tfs rcheckin -i testbranch,并收到以下消息:“未找到 TFS 父母!”

关于如何解决它的任何想法?

4

1 回答 1

0

我在 git-tfs 论坛中所做的相同答案,但是因为您也在这里问了您的问题...

关于如何解决它的任何想法?

不知道......但我知道你做错了什么:-(

如果你想签入一个新的 tfs 分支,你必须在之前创建它(并使用 初始化它git tfs branch --init)或使用命令创建它git tfs branch。然后你可以在 git 中使用它。

如果你一开始没有做,你可以在 rcheckin 之前做,然后做一个 git rebase ...

现在,您可以在分支中重新签入...

Git-tfs 能够使用存储在 tfs 中检查的最后一次提交中的元数据自动找到应该在其中完成检查的分支。在您的情况下,这是主要分支之一!

现在,解决你的问题......

因为您不能使用 tfs 删除变更集,所以这不是一件容易的事:-(

更简单的解决方案是创建一个新的提交来恢复所有更改并在 tfs.xml 中重新检查它。之后,您的主分支应该处于与分支提交签入之前相同的状态。

然后,在最后一个变更集上创建一个 git 分支,该变更集对应于您之前错误地 rcheckin 的 dev 分支的提交。创建一个 tfs 分支,就像我之前说的(你应该有一个带有良好元数据的新提交git-tfs-id,仔细查看 TFS 路径!)

并用于git rebase --onto -i将 dev 分支的提交重新定位到这个新的提交上。不要忘记删除您将变基的所有提交的所有元数据(否则您将再次陷入同样的​​混乱)!

现在您可以在 TFS 分支中重新签入!

于 2015-05-26T20:18:10.723 回答