Git/Git Extension中"squash"和"fixup"之间有什么区别?

Pla*_*der 97 git fixup git-extensions squash difference

我一直在使用Git Extensions一段时间(它真棒!)但我还没有找到以下简单的答案:

有时候,在输入提交消息时,会输入错误信息.我的朋友告诉我如何通过以下方式修复它(在Git Extentions中):

右键单击提交>高级>修复提交

在此输入图像描述

然后我只需选中"修改"框并重写我的信息即可!我的提交消息已修复.

然而,另一个选项"壁球提交"......我一直想知道它的作用是什么?!

我的问题是:

有人会简单地解释一下在Git/Git Extentions中Squash提交Fixup提交之间的确切区别是什么?他们看起来...... "相似": 在此输入图像描述 在此输入图像描述

dri*_*zzd 134

我不知道Git Extensions特别用它做什么,但是git rebase可以选择用壁球自动压缩或修复提交!还是修理!前缀分别为:

   --autosquash, --no-autosquash
       When the commit log message begins with "squash! ..." (or "fixup!
       ..."), and there is a commit whose title begins with the same ...,
       automatically modify the todo list of rebase -i so that the commit
       marked for squashing comes right after the commit to be modified,
       and change the action of the moved commit from pick to squash (or
       fixup).
Run Code Online (Sandbox Code Playgroud)

squash和fixup之间的区别在于,在rebase期间,squash操作将提示您组合原始和squash提交的消息,而fixup操作将保留原始消息并丢弃来自fixup commit的消息.

  • 你可以在[Git docs](http://git-scm.com/docs/git-rebase)上阅读更多关于`rebase`和squash/fixup的内容. (6认同)
  • 这是一个很好的答案。一直想知道为什么我收到组合提交消息。 (2认同)

oco*_*odo 60

简单地说,当重新定义一系列提交时,每个提交标记为a squash,使您有机会将其消息用作pickreword提交消息的一部分.

当您使用fixup该提交的消息时,将被丢弃.

  • 那么保留哪条消息用于“fixup”呢? (4认同)
  • @IgorGanapolsky 来自 git 树中下一次提交的消息。您基本上将您的提交“合并”到其中。 (3认同)

Huỳ*_*yễn 28

如果问题是执行git rebase --interactivegitsquashfixupgit之间的区别是什么,那么答案就是提交消息

s, squash <commit> = 使用提交,但融入之前的提交

f, fixup <commit>= 像“squash”,但是丢弃这个提交的日志信息


例如:

pick 22a4667 father commit message
squash 46d7c0d child commit message # case 1
# fixup 46d7c0d child commit message # case 2
Run Code Online (Sandbox Code Playgroud)

在第1 种情况下rebase 后的提交消息将是:

father commit message

child commit message
Run Code Online (Sandbox Code Playgroud)

而案例 2 中的提交消息是:

father commit message
# no sub messages
Run Code Online (Sandbox Code Playgroud)


Pau*_*ier 15

来自git-rebase doc:

如果要将两个或多个提交折叠成一个,请使用"squash"或"fixup"替换第二个和后续提交的命令"pick".如果提交具有不同的作者,则折叠的提交将归因于第一次提交的作者.折叠提交的建议提交消息是第一次提交的提交消息和具有"squash"命令的提交消息的串联,但是省略了使用"fixup"命令提交的提交消息.


Phi*_*ley 7

squashfixup允许通过各自的差异引入代码更改。(通常不提及)

squash和之间的区别fixup在于如何处理提交消息。

在这种fixup情况下,原始提交消息保持不变,并且fixup提交消息中的任何文本都将被忽略(毫不客气地转储)。

在这种squash情况下,两个提交消息被一个接一个地组合(“融合”),并提供给用户的编辑器,以便它们可以根据用户的需要合并/融合在一起。

初始组合消息(挤压)将包含显示消息开始和结束位置的注释标记。可以应用多个squash和s。fixup

在讨论小的代码更正(无需更改消息)时,术语可能会令人困惑,因为squash实际上并不需要 a 时,人们可能会建议将代码“压缩”进去。