在Visual Studio Online中删除中间提交

5

因为没有看到预览按钮,我编辑了多次我的README.md文件。现在我的提交历史中充满了无用的提交。

我能否删除其中一些提交,或者至少隐藏它们?


1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - David
2
当然可以,但我是一个有洁癖的人。无论如何,感谢您的见解。 - geriwald
2
@David,实际上这是一个很方便的功能,特别是对于分布式系统来说。 - Abizern
1
虽然我同意重写历史记录可能会吓坏人们,但这是TFVC和Git都支持的功能。尽管Git允许比TFVC更广泛的历史记录重写。 - jessehouwing
3
@David,Git不鼓励在共享提交中进行重写,但在发布之前重写自己的私有提交没有任何问题。这非常自由,因为它允许开发人员随意提交,然后在向团队推送整洁的提交之前清理代码(正如OP想要做的那样)。请注意,至少在Git中,“重写历史”有点不准确。实际上,您会创建新的提交来反映不同的历史,并分享这些提交而不是原始提交。 - Chris
显示剩余4条评论
1个回答

8

注意

重写历史可能会导致源代码控制系统处于混乱状态。在进行操作之前,请确保您有源代码的备份以防出现任何问题。

Git

根据您的团队项目设置,Readme.md 存储在 Git 存储库中,您可以完全重写历史并将压缩的提交强制推送回 TFS,从而使其忘记中间数据。这是使用 git rebase 完成的,无法通过 Visual Studio Online 站点或 Visual Studio Tools for Git 进行操作。您需要通过命令行完成此操作。

整个过程在 Git-SCM wiki 中得到了很好的解释。您需要执行以下步骤:

  1. 使用具有 Force Push 权限 的帐户克隆包含 readme.md 的存储库。
  2. 使用 git rebase -i HEAD~6(6 是要回滚的提交数)。
  3. 使用 Squash 将提交合并在一起(链接)
  4. 使用 git push --force origin master 在远程上强制重写历史记录。

注意:这将更改提交的哈希值以及之后的每个提交。在执行此操作后,请警告其他贡献者重新同步或确保没有其他人在您进行这些提交后对存储库进行了操作。

TFVC

如果您的团队项目是使用 TFVC 配置的,则该过程略有不同。

  1. 确保你有要保存的文件的副本。
  2. 使用tf destroy $/Teamproject/readme.md在源代码控制中销毁文件。如果需要,您可以使用/keephistory /stopat:C12345选项,在文件历史记录的末尾销毁特定更改集中的数据。
  3. 现在将备份的文件复制回原处。
  4. 然后像平常一样检入文件,或者使用命令行tf add $/teamproject/reqadme.md,然后是tf checkin。如果您保留了历史记录,TFVC将重新连接它。如果您完全销毁了历史记录,TFVC将只添加一个新文件。

谢谢,非常完美。 - geriwald

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接