gpt4 book ai didi

git - 在 git 中压缩提交是什么意思?

转载 作者:IT王子 更新时间:2023-10-29 00:33:16 28 4
gpt4 key购买 nike

git 中的 Squashing commits 是什么意思。我如何压缩 Github 中的提交?

我是 Git 的新手,我要求分配到 coala-analyzer 中的一个新手错误。我修复了这个错误,现在我被要求压缩我的提交。我该怎么做?

最佳答案

您可以将 Git 视为工作目录快照的高级数据库。

Git 的一个非常好的功能是能够重写提交历史。
这样做的主要原因是很多此类历史记录仅与生成它的开发人员相关,因此在将其提交到共享存储库之前必须对其进行简化或变得更好。

压缩提交 从惯用的角度来看,将所述提交中引入的更改移动到其父项中,以便您最终得到一个提交而不是两个(或更多)提交。< br/>如果多次重复此过程,您可以将 n 提交减少为单个提交。

从视觉上看,如果您在标记为开始 的提交处开始您的工作,您需要这个

Git commits squashing

您可能会注意到新提交的蓝色阴影略深。这是故意的。

在 Git 中,压缩是通过 Rebase 实现的,这种特殊形式称为 Interactive Rebase
简化当您将一组提交 rebase 到分支 B 时,您应用这些提交在完成时引入的所有更改,从 B 而不是它们的原始祖先开始。

视觉线索

enter image description here

再次注意蓝色的不同深浅。

交互式 rebase 可让您选择提交的 rebase 方式。如果您运行此命令:

 git rebase -i branch

您最终会得到一个文件,其中列出了将被重新定位的提交

 pick ae3...
pick ef6...
pick 1e0...
pick 341...

我没有命名提交,但这四个提交是从StartHead

这个列表的好处是它是可编辑的
您可以省略提交,也可以压缩它们
您所要做的就是将第一个单词更改为squash

 pick ae3...
squash ef6...
squash 1e0...
squash 341...

如果您关闭编辑器并且没有发现 merge 冲突,您将得到以下历史记录:

enter image description here

在你的情况下,你不想 rebase 到另一个分支,而是 rebase 到以前的提交。
为了像第一个示例中所示那样转换历史记录,您必须运行类似

git rebase -i HEAD~4

将除第一个提交之外的所有提交的“命令”更改为压缩,然后关闭您的编辑器。


修改历史注意事项

在 Git 中,提交永远不会被编辑。它们可以被修剪、不可访问、克隆但不能更改。
当你 rebase 时,你实际上是在创建新的提交。
任何裁判都无法再访问旧的,因此不会在历史记录中显示,但它们仍然存在!

这是你实际得到的 rebase :

enter image description here

如果你已经把它们推到了某个地方,重写历史实际上会产生一个分支!

关于git - 在 git 中压缩提交是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35703556/

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