gpt4 book ai didi

git - 如何消除 Git 存储库中的垃圾提交?

转载 作者:太空狗 更新时间:2023-10-29 13:14:02 25 4
gpt4 key购买 nike

当我调查一个 bug 时,有时我工作不仔细,尤其是当我深入挖掘具有许多提交的多个分支时。

希望一旦我完成它,我会使用 git merge yeah_i_got_it 将工作结果 merge 到我的主分支。在这种情况下,我的存储库可能如下所示:

    v There is a bug here
A---B---C----------------------------------------------F (master)
\ /
o---o---o--o--o (bug) /
\ /
o---o--o--o (oups_this_way_better) /
\ v Clean a bit /
o---D---E------------------o (yeah_i_got_it)
^
Solved the bug here

最终我希望在一天结束时只保留一些相关的提交:

A--B--C--D--F (master)

至于剩下的,是不是垃圾,我不需要。那么,处理这种令人不快的工作流程的最佳方法是什么?

因为 Git 即使在所有垃圾分支都被删除后仍保留所有内容,所以 Git 的一个有用选项是为每次提交提供一个重要性标志,以帮助我在匆忙之后清理我的存储库。在我的存储库中,我可以识别无用的提交、有一天可能有用的提交、肯定有用的提交,最后但并非最不重要的是,我需要与它们的分支保持一致的非常重要的提交。

摆脱无用的提交通常会花费我很多时间。我将需要回顾我的日志,确定我想要删除的日志并正确无误地完成工作。

所以我的问题是:

How to properly eliminate temporary commits and branches from my Git repositories definitively?

这里有一些随意的想法:

  • 我的工作流程很糟糕,我永远不应该那样工作。
  • 只需为每个临时提交评论添加一个前缀,例如“垃圾”或“垃圾”。
  • 可能存在一个本地 Git 解决方案可以帮助我完成像 git rebase-and-clean yeah_i_got_it --keep D
  • 这样的工作

最佳答案

完成您所要求的方法是在 C 中检查 master,然后执行 git merge --squash yeah_i_got_it。这会将整个分支 merge 为一个提交。

另一种方法是使用 yeah_i_got_it 分支中的 git rebase -i master 对提交进行 rebase 交互。在交互式 rebase 中,您可以将 E 标记为“修正”。如果它的提交消息以“fixup!”开头并且您设置了适当的 git 配置选项,然后标记将自动完成。

注意:你说你想要 A-B-C-D-F,但我认为你实际上只想要 A-B-C-D。不需要“F”提交。

关于git - 如何消除 Git 存储库中的垃圾提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31390961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com