标签: squash

Git merge --squash和--no-commit之间的差异

正如标题所说,我并不清楚a git merge --squash和a 之间的区别git merge --no-commit.

据我所知的帮助页面git merge,这两个命令都会让我进入一个更新的工作树,在那里它仍然可以编辑然后进行最后的提交(或多次提交).

有人可以澄清这两个选项的差异吗?我什么时候使用一个而不是另一个?

git merge squash

57
推荐指数
1
解决办法
4万
查看次数

将我的所有提交压缩为一个用于GitHub pull请求

我在GitHub上发了一个pull请求.现在,存储库的所有者正在说要将所有提交压缩成一个.

当我键入git rebase -iNotepad打开时,其中包含以下内容:

noop

# Rebase 0b13622..0b13622 onto 0b13622
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# …
Run Code Online (Sandbox Code Playgroud)

git github squash pull-request

53
推荐指数
4
解决办法
4万
查看次数

git rebase interactive:squash merge提交在一起

我希望有一个简单的解决方案,可以在交互式rebase期间将两个合并提交压缩在一起.

我的存储库看起来像:

   X --- Y --------- M1 -------- M2 (my-feature)
  /                 /           /
 /                 /           /
a --- b --- c --- d --- e --- f (stable)
Run Code Online (Sandbox Code Playgroud)

也就是说,我有一个my-feature最近合并过两次的分支,中间没有真正的提交.我不只是想重新定义my-feature分支,因为它是它自己的已发布分支,我只想将最后两个合并提交压缩成一个(还没有发布那些提交)

   X --- Y ---- M (my-feature)
  /            /
 /            /
a --- ... -- f (stable)
Run Code Online (Sandbox Code Playgroud)

我试过了:

git rebase -p -i M1^
Run Code Online (Sandbox Code Playgroud)

但我得到了:

Refusing to squash a merge: M2
Run Code Online (Sandbox Code Playgroud)

我最后做的是:

git checkout my-feature
git reset --soft HEAD^  # remove the last commit (M2) but keep the changes …
Run Code Online (Sandbox Code Playgroud)

git merge interactive rebase squash

52
推荐指数
3
解决办法
3万
查看次数

新的Docker如何运作

Docker 1.13中添加了新的--squash参数.

我现在希望减小图像的大小,以及能够"隐藏"我的图层中的秘密文件.

现在,您可以看到使用和不使用--squash参数进行构建的区别.

没有壁球

在此输入图像描述

用壁球

在此输入图像描述

现在问我的问题.

如果我在第一层中添加一个秘密文件,那么在我的第二层中使用秘密文件,最后在第三层中删除我的秘密文件,然后使用--squash标志进行构建.

现在有办法得到秘密文件吗?

squash docker dockerfile

48
推荐指数
2
解决办法
3万
查看次数

Git压缩所有提交在分支中没有冲突

对我们来说,一个常见的开发工作流程是checkout分支b,向它提交一堆,然后将所有这些提交压缩成一个(仍在b).

但是,在rebase -i压缩所有提交的过程中,经常会出现多个步骤的冲突.

我本质上希望将分支更改为一个提交,该提交表示最终提交时存储库的状态 b

我做了一些搜索,但我还没找到我正在寻找的东西.我不想,merge --squash因为我们想在合并之前测试压扁的功能分支.

git rebase squash

27
推荐指数
2
解决办法
9948
查看次数

Git:如何从一个分支到另一个主要的提交和压缩提交?

我正在尝试将我的所有提交从当前分支重新压缩并压缩到主分支.这是我正在尝试做的事情:

git checkout -b new-feature
Run Code Online (Sandbox Code Playgroud)

在我尝试之后做了几次提交:

git rebase -i master
Run Code Online (Sandbox Code Playgroud)

在这种情况下,提交将保留在new-feature分支中

git checkout master
git rebase -i new-feature
Run Code Online (Sandbox Code Playgroud)

它给我和编辑带有noop消息的窗口.

我知道命令:

git merge --squash new-feature
Run Code Online (Sandbox Code Playgroud)

但我正在努力学习rebase命令.

git branch rebase squash

24
推荐指数
2
解决办法
3万
查看次数

如何在分支的第一个(根)提交上使用交互式rebase?

如果我在以下情况,

$ git log --oneline
* abcdef commit #b
* 123456 commit #a
Run Code Online (Sandbox Code Playgroud)

我知道我总能跑

$ git reset HEAD~ 
$ git commit --amend
Run Code Online (Sandbox Code Playgroud)

但是,我试着跑

$ git rebase -i HEAD~2
Run Code Online (Sandbox Code Playgroud)

但我明白了

fatal: Needed a single revision
invalid upstream HEAD~2
Run Code Online (Sandbox Code Playgroud)

因此我的问题是:有没有办法git rebase用来压缩这两个提交?

git rebase squash

23
推荐指数
3
解决办法
7720
查看次数

为什么我不能使用git merge --squash with --no-ff?

我正在尝试使用git merge --squash和--no-ff参数,但是git不允许.有人有任何消化帮助我吗?

我不能使用快进合并,我需要使用--squash参数来分组在另一个分支中进行的大量提交.

谢谢!

git git-merge squash

19
推荐指数
3
解决办法
6267
查看次数

Git branch --merged/--no-merged和--squash选项

git branch --merged 似乎没有--squash很好地发挥.

如果你正常git merge,那么git branch --merged告诉你合并了哪些分支.但是,如果使用--squash选项,即使生成的树相同,也不是这种情况.

我怀疑这是一个git缺陷,想知道是否有一些git-fu我错过了,或者我是否误解了一些东西.

简而言之:我想使用--squash,但也希望git告诉我,我压扁的另一个分支是否已经过了.

git merge squash

17
推荐指数
1
解决办法
2879
查看次数

Git - 压扁整个分支 - 一行压扁命令

当我正在处理新代码时,我会做很多小提交来跟踪我的更改.但是,我的公司更喜欢在一次提交中提交每个功能.所以解决方案是将我的整个分支压缩到一个提交.

我怎么压扁整个分支而不使用git rebase --interactive,然后改变picksquash对所有提交?

git squash git-squash

16
推荐指数
5
解决办法
6750
查看次数