问题标签 [git-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 投票
2 回答
308 浏览

git - 查看历史记录时如何知道哪个 Git 在我的分支中提交了 squash

与许多地方一样,我们喜欢在合并到 master之前在我们的功能分支中压缩我们的提交。

为此,我们经常git rebase -i HEAD~10在合并之前使用交互式 rebase ( )压缩提交

我如何知道分支内要压缩哪些提交?

如果我这样做,git log我会看到我的提交历史 - 加上之前对 master 的提交。
有没有一种简单的方法可以查看/知道在此分支上进行了哪些提交与已经在主分支上进行的提交? git history似乎没有以明显的方式区分它们。我我知道这个分支上的第一个提交是什么——有没有简单的方法可以确定?

0 投票
1 回答
334 浏览

git - 如何压缩在 GitHub 网站上的提交?

我通过网站在我的 GitHub 存储库上的文件中进行了一些编辑,然后提交了更改。这不像更改文件,提交然后将其推送到原点,我是通过访问网站直接完成的。现在该分支中有两个提交。我可以从终端压缩最后一次提交吗?如果没有,有什么办法可以从 GitHub 网站上压缩它吗?

我不是以英语为母语的人。所以,请原谅我的英语不好。

0 投票
3 回答
2526 浏览

git - 如何在不变基的情况下将我的 git 分支提交压缩到同一个分支中?

我有一个本地分支,我们正在使用带有拉取请求的 git-flow,我希望在收到 PR 反馈后压缩一些提交。

我怎样才能将我所有的提交(例如来自 PR 的)压缩到同一个分支中?

我想它会是这样的:

但我不确定。
有了这么多步骤,使用一个函数将它们捆绑在一起并只需将分支名称作为参数传递似乎也是一个很好的例子。当然,自动化意味着确保处理错误、异常、边缘情况等。

我不想使用交互式 rebase,因为对于我训练的新手来说,这有点棘手。我也不想知道提交的数量,我只想完成这个分支上存在的所有提交。

0 投票
2 回答
773 浏览

git - 作者的 Git Squash 顺序提交以压缩历史记录

我的团队正在开发一个长期运行的功能分支,该分支现在有数百个提交,现在我需要将它合并到 master 以进行生产发布。

我不想在该分支中有那么多提交,因为许多提交是为了修复错误而完成的,并且每次提交只更改几行。

在 Github 的 PR 创建页面上,它限制了显示为 250 的提交。

来自 Github -“这个比较很大!我们只显示最近的 250 次提交”

因此,我决定压缩历史,将作者的一组顺序提交压缩成一个提交。

例如,假设我们有这样的提交:A - A - A - B - B - A - C - D - D - B- B -A来自作者 A、B、C 和 D,那么生成的提交日志将有 A (3) - B(2) - A - C - D (2) - B(2) - A 其中 X`(N) 是 N 次提交的压缩提交来自作者 X。

编辑:我知道这需要一个脚本,我正在寻找相同的。我不想通过交互式变基来做同样的事情。

0 投票
3 回答
624 浏览

git - git rebase squash 接收第二条消息(如修复)

假设我有一些提交:

我想将提交 1 和 2 压缩在一起,只保留第二次提交的消息,然后我会使用git rebase -i, 编辑为:

而且我总是需要编辑合并的消息并删除第一个。

我知道我可以重新安排提交并fixup像这样使用:

但是我有风险,颠倒两个提交的顺序,可能会有一些冲突。

我怎样才能以更少的操作达到相同的结果,尤其是避免编辑组合消息。请注意,在提交 1 之前和提交 2 之后可能有很多提交。

0 投票
2 回答
369 浏览

git - 推送没有功能分支的 master

我已经对这个问题进行了很多搜索,但没有找到答案,尽管这似乎是一种常见的情况。对不起,如果它仍然是重复的。

我使用 Git 来管理我的 Java 源文件。我是唯一的开发者。我在 LAN 共享上创建了一个“远程”存储库。我定期将我的主分支“推送”到这个远程存储库,因为 LAN 共享可以安全地防止数据丢失(它已备份)。我在 Windows 上使用 TortoiseGit,我不使用 Git 命令行。

通常,我会同时开发 2-3 个新功能。我为每个特性(又名特性分支)创建了一个新的 Git 分支。当我完成一个功能时,我通过创建一个“合并提交”将它合并到 master。这工作正常。

合并后,我将我的主分支“推送”到远程存储库,以便我的更改是安全的。我的问题是这并不完全符合我的要求。我的“合并提交”被推送到远程没有问题。但是,我的功能分支中的所有提交也会被推送。我不想要这个。在我的远程存储库中,我只想看到一个“干净的”主分支。我的功能分支包含各种中间提交。显然,这些在我的远程存储库中是不需要和混淆的。

我使用 TortoiseGit 1.8.15.0。当我“推送”我的更改时,弹出窗口的“参考”部分显示 Local=master,Remote=master。此外,未选中“推送所有分支”(默认)。在窗口的底部,一切都是默认的,这意味着只有“自动加载 Putty Key”被选中。

我做错了什么,我怎么能在我的遥控器上实现一个“干净”的主分支?

附加信息:我的分支结构看起来像git-merge 手册页上的那个

0 投票
3 回答
14435 浏览

git - 如何最好地压缩旧提交

一位开发人员最近离开了,他在几个月前的回购中留下了大量的提交,就像“更新”一样。理想情况下,我想将它们压缩成一个提交,但我只为最近的提交做了这个。

我将如何处理以下提交(假设从 2 个月前开始意味着有数百个)?

.... 从 2 个月前

不想要/不需要任何花哨的东西,只是一个简单的解决方案。这些提交尚未公开共享(除了今天与我分享),因此不会影响其他人的提交历史。

0 投票
2 回答
15302 浏览

git - Intellij - 如何仅压缩本地分支

在 Intellij 中使用 Git 时,如何压缩本地分支的所有提交?我在变基分支窗口中使用什么设置?

我尝试将 Onto 设置为 local/master 并将 From 设置为我的分支,但随后它会尝试将我所做的每次提交的主更改合并到我的分支中,即使我通常每天早上将我的分支重新设置为 master ......所以应该没有冲突。然而,它几乎总是会发现冲突并导致合并问题。我只想压缩分支提交和消息,所以当我推送到 Github 时,它只会看到一个。

在此处输入图像描述

0 投票
3 回答
5776 浏览

git - Git - Difference between amend and squash commands

What is the difference between amend and squash commands? I tried both and found that both are doing the same for proper management.

0 投票
3 回答
41293 浏览

git - Cherry-pick and squash a range of commits into a subdirectory or subtree

How can I tell cherry-pick to pick range of commits and squash it?

Or in other words, apply the diff between two commits to the current state of the repository?

The following does not work (cherry-pick has no --squash option):

Note: My use case is within a subtree scenario - before anyone starts arguing that I should not squash.

The following works, but then I have a range of separate commits. I can squash them manually with interactive rebase afterwards.

Is there any way to do the squashing as part of the cherry-pick?