问题标签 [squash]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
43318 浏览

git - Git 合并 --squash 和 --no-commit 的区别

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

据我了解的帮助页面git merge,这两个命令都会让我处于更新的工作树中,在那里仍然可以编辑然后进行最终提交(或多次提交)。

有人可以澄清这两个选项的区别吗?我什么时候用一个代替另一个?

0 投票
1 回答
397 浏览

git - 部分挤压合并

我想将我的feature-branch 合并到我的develop-branch 中,但是将一些提交压缩为 1,同时按原样拉入其他提交。是否有可能git merge --squash feature然后选择feature应该压缩来自 -branch 的哪些提交以及按原样处理哪些提交?

0 投票
3 回答
2342 浏览

git - git merge:有没有办法强制--squash?

因此,我们项目的开发工作流程是这样的:我们创建一个任务/错误票证,然后我们从 master 分支处理任务/错误,并最终将其合并回 master。我们希望 master 上的提交有很好的消息。在任务分支上提交的人可能没有好的提交消息,这没关系,但是如果要合并分支,这些带有不干净消息的提交将进入 master。

解决此问题的一种方法是始终使用 --squash 合并到 master 。这样,您就有机会提供良好的提交消息并将整个提交范围视为一个。我想知道是否有办法强制执行?意思是,如果我们可以让 git 服务器拒绝未压缩的合并?

0 投票
1 回答
437 浏览

git - Git - 交互式 Rebase 和 Squashing 的问题

我知道有很多关于这个的问题,但我似乎根本找不到我正在寻找的答案。

我刚刚将我的任务分支合并到我的主分支中,我准备将我的更改推送到远程主分支。但是,它们显示为两个提交:

这是 git log 的输出,我希望将两个提交压缩为一个。但是,当我这样做时:

它实际上只显示 4 个先前提交(和推送)的提交。我是否误解了我的分支是如何合并回来的?如果我尝试 git rebase -i 这只会显示 git 日志列表中的第一个提交。

谢谢!

0 投票
1 回答
29913 浏览

git - `--squash` 和 `--no-ff --no-commit` 有什么区别?

应该使用哪一个来隐藏微提交?

唯一的区别是git merge --squashgit merge --no-ff --no-commit其他父母的否认吗?

0 投票
2 回答
113 浏览

git - 分支时挤压或变基

我正在从我的主分支开始一个新分支。但我不希望新分支上的全部历史。我希望只有 1 个提交来启动分支。

我创建了新分支并尝试重新设置所有提交,但它不起作用,因为我没有以前的提交。我不明白“先前提交”的东西......

也许压缩提交会更好。但是我的新分支在创建时已经与主分支合并。

我不知道该怎么做。你有想法吗?

0 投票
1 回答
180 浏览

git - 壁球变基后,如何使 git 分支历史记录与 master 匹配?

假设我有以下树结构:

我想压缩提交 B,所以各自的历史应该如下所示:

我发现,在我 squash master 之后,当我结帐分支一或两个时,当我运行 git log 时,它们仍然显示旧的历史记录。分支时git会复制树吗?我是否需要单独重新设置每个分支?

谢谢

0 投票
2 回答
1474 浏览

git - 我可以进行真正的 git 合并,而不必将提交消息从分支推送到 master 吗?

我正在将来自稳定分支的更改合并回开发分支。我希望它是一个“真正的”合并,我的意思是当我这样做时它应该显示一个合并git --graph --oneline

问题是,我不想提交来自分支的所有消息,而只是提交我的合并提交消息。(我们开发人员的提交消息必须符合特定模式,由远程挂钩强制执行,但分支上的一些提交来自“发布”用户,不必符合也不需要。)

有没有一种方法可以在不从分支推送提交消息的情况下执行“真正的”合并?

这是我目前的合并方式(来自大师):

这是我提交后的(经过清理的)图表的样子,这正是我想要的:

我的问题是当我尝试推送时,我们的远程钩子拒绝推送,因为提交消息eec2ef6不符合并且我不是发布用户。我可以仅使用来自 的消息推送我的合并b3492a7,还是必须压缩合并(我相信这意味着图表不会将其显示为合并)?

0 投票
2 回答
202 浏览

git - git,即时压缩提交

我有一个本地 git 仓库,一个远程仓库。自从上次从远程拉取以来,我对本地仓库进行了 5 次提交。

现在我需要推送到远程。我需要压缩我最后的 5 次提交。

我可以做到git rebase -i HEAD~5

但这并不好。我不想更改本地存储库中的任何内容。我想将一个压缩的提交推送到远程,并在我的本地存储库中保留 5 个未更改的提交。

有任何想法吗?

UPD:如果我有 5 次提交的本地仓库怎么办。我需要创建新的远程仓库来与其他人分享我的代码。如何压缩这个新仓库的提交?

0 投票
1 回答
4245 浏览

git - 当 rebase 是空操作时压缩 git 提交

我正在尝试将一些提交压缩到我希望贡献的 github 项目的 pull-request-ready 包中,但是使用git rebase -i master并没有给我期望的选项(基于对 StackOverflow 和其他地方的阅读。这个这是我第一次尝试压缩提交,所以我可能只是错过了一些东西。

该项目的历史大致如下:

此时,origin/master 或 upstream/master 没有任何变化,所以即使没有重新设置我的功能分支,也与 origin 和上游呈线性关系。当我这样做时git rebase -i master,我的任何提交都没有在弹出的编辑器中列出,完全空白,rebase 的输出是Successfully rebased and updated refs/heads/feature.

我知道我可以使用

但我的理解是,如果我这样做,我将失去所有的历史。

有没有另一种方法来完成我想要的,或者我只是错过了显而易见的事情?

更新

我希望看到的是一个编辑器,其中列出了我在功能分支中所做的提交,以便我可以选择要选择的提交和压缩的提交。我实际看到的是一个空编辑器,这让我想知道是否因为我当前的分支与我的主分支是线性的,所以不需要重新设置任何内容,因此编辑器中不会出现任何提交(尽管我想我会期望得到一个“nothing to rebase” 类型的消息,而不是上面提到的成功消息)