【发布时间】:2017-12-15 17:09:02
【问题描述】:
我有一个配置为使用 git 的 TFS 源代码存储库。我遵循不强制推送其他开发人员使用的任何分支的规则——但是,我们的团队有一条规则说我们可以在远程“拥有”分支,这样我们就可以备份我们的代码。其他开发人员不得从这些“拥有”的分支分支。通常在我的日常工作中,我会重新排序本地提交、合并本地提交、重做 cmets 等。然后在某些时候我想推送我的更改,因此它们不仅在我的笔记本电脑上。当然,如果我执行许多之前列出的操作,遥控器将不允许推送。所以我强推。在某个时候,我对自己的工作感到满意,我会从这个“拥有的”分支创建一个拉取请求到我们的开发分支——此时我也会删除我一直在使用的本地。一旦 PR 被批准并合并到开发中,原始的远程“owend”功能分支也将被删除。
一切正常。 但是,TFS 有一项功能,允许您将提交链接到工作项。要使用此功能,您将 #IdOfWorkItem 添加到提交中。 TFS 会自动将工作项链接到提交,您可以从工作项中浏览该提交。太好了。
但是,它也会将这些提交从我们的“拥有”功能分支链接起来。我想知道如果我添加 #Id 注释、推送、然后破坏提交并强制推送会发生什么。正如预期的那样,提交链接到具有给定#id 的相应积压日志项。出乎意料的是,当我通过强制推送破坏该提交时,链接仍然存在,甚至可以导航到。 从那以后我了解到这是一个悬空提交,在 git 中很正常。有多种方法可以处理它们,并且可以将它们清理干净。
问题:
- TFS git 是否曾经清理过悬空提交?
- 如果提交和工作项之间的链接会发生什么情况 提交被清除
- 上述行为是否对 TFS 具有破坏性 - git 存储库中断对这些悬空提交有何影响?
- 如果在这种情况下没有强制推 备份本地存储库的建议是什么 在将它们推送到遥控器之前?
【问题讨论】: