1

TL;博士

本文所述,我更改了 TFS 变更集注释。如何使用 Git-Tfs 将其反映在本地 Git 存储库中的相应 Git 提交中?

详细版

我是 Git-Tfs 用户。我的工作流程是这样的,我尝试将极小的代码增量提交到我的本地 Git 存储库(“一行更改 - 测试绿色 - 提交”之类的东西)并在我有一个有意义的时候将其推送到 TFS 服务器(但希望仍然很小)变更集。通常这是在一次 Git 提交之后,但有时是在几次之后。

当一次将多个 Git 提交检查到 TFS 时,Git-Tfs 会将 Git 提交消息组合为默认的 TFS 签入注释。到目前为止,一切都很好。我通常会篡改它们以使它们作为单个变更集评论更流畅地阅读。但是今天我忘记了并签入了一条对我使用 TFS 的同事没有帮助的消息。

好吧,没什么大不了的。我使用 TFS 编辑变更集注释以使其更加连贯。但是,我无法让我的本地 Git 存储库与此更改同步。这没什么大不了的,因为主要是我为其他人更改的。但是,我很想知道是否可以将其同步。

我试过的

我试过了,但提交消息仍然是我编辑变更集注释之前的内容:

git reset --hard HEAD~
git tfs pull
4

1 回答 1

1

如何使用 Git-Tfs 将其反映在本地 Git 存储库中的相应 Git 提交中?

你应该明白,由于 git 是如何构建的,你不能修改提交。每个 git 提交都由其 sha1 “密封”。

您唯一能做的就是将您的 tfs 远程重置tfs/default为以前的状态并再次获取 tfs 变更集。我什至不明白你想通过重置本地分支来实现什么!?!这始终是反映远程存储库提交而不是本地分支的远程!git-tfs 甚至不关心你的本地分支。它唯一在看的是你的 tfs 远程中最后获取的变更集(基于元数据 git-tfs-id: 写入获取的变更集的提交消息中)。

自 v0.19 以来,有一个 git-tfs 命令reset-remote可以使用 git-tfs 轻松(且安全)地进行此重置:

git tfs reset-remote HEAD~ #reset the tfs remote to fetch it again
git reset --hard HEAD~ #reset also the local branch to override a git-tfs optimisation when re-fetching changesets
git tfs pull #fetch tfs changesets again

PS:

当一次将多个 Git 提交检查到 TFS 时,Git-Tfs 会将 Git 提交消息组合为默认的 TFS 签入注释。到目前为止,一切都很好。我通常会篡改它们以使它们作为单个变更集评论更流畅地阅读。

如果您希望 git-tfs 在 TFS 中“镜像”您的提交,也许您应该考虑使用该git tfs rcheckin命令...

于 2014-01-31T09:16:10.713 回答