问题标签 [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 投票
3 回答
207 浏览

git - 当不是你最近的提交时如何压缩你的提交

如果这些是您最近的提交,那么压缩您的提交似乎很容易(使用 Git 将我最后的 X 提交一起压缩

但是,如果我想压缩我的一些不是最近提交的 repo 提交,HEAD~3比如HEAD~6.

有没有办法做到这一点?

0 投票
4 回答
5196 浏览

git - 压缩后编辑提交消息

我想实现 featureX 并在编写后提交了它

之后我做了一些更改并由

通过

再次进行一些更改并由

通过

现在 git log 显示 -

我想将提交消息 yo1 和 yo2 更改为 change1 和 change2。

另外,我想知道我在yo1和yo2中所做的更改,因为我忘记了我在yo1和yo2中所做的更改。

0 投票
2 回答
2599 浏览

git - Git 合并简单与壁球。什么目的?如何跟踪每个功能的一次提交?

我不喜欢 Git 的一件事是提交的数量。不要误会我的意思,这是一种非常方便的(安全地)存储您的工作的方法,但从长远来看,搜索的粒度太大。

让我在使用从develop分支的功能分支进行开发时描述以下场景。

  • Feature1是从开发分支出来的,有 5 个提交
  • Feature2是从开发分支出来的,有 3 个提交
  • Feature3是从Feature1分支出来的,有 5+2 次提交。

之所以有三个分支,是因为有一个团队在处理存储库。Feature3假设Feature1已经完成,等待合并到开发中。还有其他用例,但这是最简单的示例。

我的目标是在所有功能完成后对开发进行三个提交。

使用 git 合并/拉取

上述场景运行良好。因为本质上这两个命令都将提交移到了开发分支中。当Feature1被合并时,开发引用它是五个提交。当Feature3将被合并时,只有最后两个提交将被合并到develop中。

唯一不利的方面是开发获得了太多的提交。这意味着当合并到master时,所有“噪音”都会移动。因此我的目标没有实现。

使用 git merge 和 squash

Feature1被合并时,develop得到一个新的提交,它是所有Feature1的聚合。这非常好,因为现在只需一次提交即可跟踪该功能。删除Feature1后,所有中间提交都不再可见,从而使跟踪更容易。这也与一个拉取请求和一个 github 问题等概念相匹配。

Feature3将被合并时,会出现冲突,问题就开始了。要解决这个问题,您需要将develop合并回feature3。与冲突。这会导致一个新的提交,其中更改了零个文件。现在我们合并壁球Feature3开发.

我的目标实现了,但牺牲了很多微观管理。

问题/备注

据我了解,这是 git 的现实。我读过的一个建议是创建一个兄弟功能分支来保存压缩的合并提交。将同级分支用于拉取请求,因此强制每个功能使用一个提交。这并不能解决在尝试合并其他分支时产生的冲突,尤其是从其他特性分支继承的那些。

  • 可以在同一个分支内做内部壁球吗?我不这么认为,但问也无妨。
  • 我错过了什么?
  • 这是壁球合并的权衡吗?解决可能零代码更改的冲突?
  • 是否值得追求“每个功能一次提交”的概念?
    • 如果不是,那么壁球的目的是什么?谁在使用这个?

我已经阅读了 rebase 的替代方案,并在合并后使用 reset 模拟了壁球,但据我所知,没有一个解决提到的合并feature3的开销。

0 投票
1 回答
416 浏览

git - 压缩数百个关于原点的旧提交

我犯了一个愚蠢的错误,不确定解决它的最佳方法。这是我所做的:

  • 基于样板创建了一个 Web 项目。
  • 在进行初始提交之前删除 .git 以删除所有历史记录(大约 500 次提交)
  • 几个月后,我自己的项目提交了大约 200 个,我将上游样板分支合并到我项目的本地分支中。这从上游样板中增加了大约 500 个提交。
  • 在本地分支中进行了 10 次左右的额外提交,以使我的项目使用样板中的更新再次工作
  • 将工作的本地分支合并到我的开发分支中
  • 将开发分支推送到原点
  • 在本地开发分支上再创建一个提交(未推送到原点)
  • 在尚未合并到开发的另一个本地分支上创建了大约十几个提交(未推送到原点)

我的 git 历史现在拥有我最初删除的第一个项目提交之前的所有样板历史。它还散布在我的提交中间有数百个提交。

我想做的是将合并中的所有内容从上游压缩到我正在使用的本地分支中,并将其合并到一个提交中。有没有一种无痛的方法来做到这一点?

另外,我还需要重写关于起源的历史。这是一个私人仓库,只有几个人在使用它。我该怎么做呢?

0 投票
1 回答
201 浏览

git - 分支 squash-merged to master,并合并回分支

我的 git 工作流程包含在经过验证后合并到 master 的功能分支。但是,我不知道这些被压扁的提交被带回它们来自的同一个分支的后果,通过没有压扁到分支的合并主控。

如果没有压缩到 master 的合并,那么将 master 合并回同一个分支将是微不足道的,因为许多提交是相同的。

0 投票
1 回答
7208 浏览

git - 推送后压缩提交

想象一个具有以下提交的 git 存储库:

这些都已经推送到远程主机了。现在有没有办法重写历史并将中间两个合并为一个提交?就像是

0 投票
0 回答
558 浏览

git - Git壁球不工作

我正在尝试使用git rebase -i HEAD~10并显示此页面:

在此处输入图像描述

如图所示,我试图将 6 个提交压缩为一个。但是,当我保存文件时,我没有看到另一个编辑器让我为压扁的提交提供新的提交消息。我也没有看到提交的任何更改。什么都没有被压扁。

我想知道它是否与错误的vim版本有关?因为我得到

抱歉,bufexplorer 7.4.12 需要带有 patch1261 和 patch1264 的 Vim 7.3 或更高版本。处理 /Users/jeffreyyong/.vim/plugged/vim-gutentags/plugin/gutentags.vim 时检测到错误:第 8 行:gutentags:此插件需要 vim >= 7.4。UltiSnips 需要 Vim >= 7.4 按 ENTER 或键入命令继续

当我一开始做git rebase -i HEAD~10的时候。

0 投票
1 回答
2413 浏览

git - 如何在合并到 master 之前压缩提交?

我从 master 分支出来并在我的新分支 branchA 中工作,我在 branchA 中进行了一些提交,然后不时将 master 合并到 branchA 中,以使其与最新更改保持同步。现在我想在合并到 master 之前将我的提交压缩成一个提交,我该怎么办?我知道git merge --squash可以压缩提交。但是,我现在不想合并它,因为我正在等待代码审查批准。使用 rebase 也不好,因为我将 master 合并到 branchA,我想知道是否有任何好的方法来压缩提交。谢谢!

0 投票
5 回答
4757 浏览

git - 如何通过 GitHub 删除所有“Squash and Merge”的 git 分支?

自从 GitHub 引入Squash 和 Merge以来,我工作场所的所有酷孩子在合并拉取请求时都在使用它。有没有办法清理“Squash and Merge”分支?

以下命令来自如何删除所有已合并的 git 分支?不适用于“Squash and Merge”:

0 投票
2 回答
6517 浏览

git - 如何在 Git 中压缩提交?

我正在尝试压缩我的提交并将我的分支合并到 master 作为一个单一的提交。这就是我正在尝试的。我切换到主分支,然后我做

我得到

之后我承诺。但是,这就是我得到的

出于某种原因,这些更改没有得到反映,我收到的消息没有提交。我已经在堆栈上浏览了许多帖子和问题,但直到现在都没有任何帮助。