如this post中所述,我更改了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
答案 0 :(得分:1)
如何使用Git-Tfs将其反映在我本地Git存储库中的相应Git提交中?
你应该明白,由于git是如何构建的,你不能修改提交。每个git提交都由其sha1“密封”。
您唯一能做的就是将tfs remote 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
命令......