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

git - Git - 壁球后恢复中间提交

我已经将几个提交压缩成一个提交。squash 之前的提交之一包括调试打印,而后来与它一起压缩的提交删除了这些打印。有没有办法恢复它们?

0 投票
2 回答
526 浏览

git - 将提交压缩到功能分支上,现在无法干净合并回主控

好的,所以我通过压缩一堆提交遇到了一些麻烦,并且想知道是否有办法从中恢复。这是发生的事情,

我们从这里开始:

两个分支都完成了工作:

合并从masterto的更改mybranch(不幸的是,这里被压扁了,所以 B、C、G 和 H 被合并到一个单一的提交 H' on 中mybranch):

两个分支都完成了工作:

现在我想合并从mybranchto的更改,master并且遇到大量冲突,说两者都修改了相同的文件。

关于我现在可以尝试做什么以从mybranchto进行干净合并的任何建议master

更新 1

这是输出git log

0 投票
1 回答
63 浏览

git - 如何在不陷入冲突的情况下重写整个 git 历史(压缩和改写)?

我正在处理大约 5000 次提交(包括合并)的代码库。我开始交互式 rebase 以压缩类似的提交并重新编写弱提交消息。在此之前我删除了这篇文章之后的一些大文件。

然而,我从第 7 次提交开始就出现了冲突,并且每次提交的冲突都会变得更大。有没有办法只进行不会引发任何冲突更改的操作?

我使用命令:

0 投票
1 回答
379 浏览

git - 我们可以将最新提交压缩到特定的先前提交吗?

例如,如果我们想将提交压缩HEAD到 commit HEAD~4,我们有一个选项,我们可以通过

  1. 将提交重置HEADHEAD~3
  2. 构建一个与我们的旧 HEAD 具有相同更改的临时提交(例如,temp
  3. 隐藏其他分阶段/非分阶段的更改
  4. temp与我们的旧人挤在一起HEAD~4
  5. 弹出我们隐藏的更改
  6. 再次构建提交作为较旧的提交(HEAD~3HEAD)。

还有其他更快更方便的方法吗?

0 投票
1 回答
523 浏览

git - git merge --squash (branch) 给出错误

目前我有一个1-user-model分支。

然后,我从这里签出并创建了一个1-user-model-squash分支。

然后,当我尝试运行时git merge --squash 1-user-model,出现此错误。

致命的:您不能将 --squash 与 --no-ff 结合使用。

我还尝试签出master然后运行相同的命令,但仍然出现该错误。

有什么线索吗?

0 投票
3 回答
3524 浏览

git - 在 GitHub 中将 PR 合并+压缩到 master 后,如何同步您的 git dev 分支?

所以 GitHub有能力为 PR 合并 + 压缩提交。

dev我们从->遵循 PR'ing 代码的过程master

以前,我一直只是“合并” PR,但这会生成一个新的提交,上面写着:“ Merge Pull Request #1 from foo/bar”。:( 呜呜……

所以我想我可以试试Squash CommitsGH的新东西。这创建了一个新的提交,我之前的所有提交都被压缩了。好的,到目前为止一切顺利。

然后我回到我的dev分支(在我的开发人员机器上).. 拉下upstream/master(这是 PR 和 squash-merge 发生的地方))现在它向我的本地历史添加了另一个提交!它没有去“哦..哇。你太离谱了..让我们同步”。它只是做了一个合并。

因此,Squash+Merge 按钮压缩了 4 个提交并将其替换为 1 ...upstream/master我的 localhost 机器上的拉动现在我的 4 个提交仍然存在,并且 PR 所做的 Squashed-commit 以及一个新的提交,即“ Merge branch master .. blah ... noise ..spam”提交:(: (:(

在合并壁球发生后我应该做一个特殊的技巧/工作流程..以确保我的dev分支正确同步?就像..每个人都只是删除他们的本地主机dev分支,然后再拉回upstream/master他们的本地主机并进入(新创建的)dev分支?

请记住:这里的目标是避免那些糟糕的“合并拉取请求 #2..”合并气泡消息。

还是人们暂时只是通过 CLI 执行此操作,直到 GitHub 学习如何执行此操作:(

0 投票
1 回答
333 浏览

git - 如何在推送后清理 git 历史记录删除某些提交?

我正在尝试做的事情:

我完成了一个功能。

然后我意识到我错过了一些东西。

现在我的历史看起来像这样:

我希望它看起来像这样:

将所有missed something提交合并到feature A complete提交中。

我知道git rebase -i HEAD~4这是正确的方法,但它实际上并没有删除错误的提交来清理历史。

我注意到在其他一些文章中有一个git commit --fixup命令和一个git rebase -i --autosquash,但我没有让它正常工作。我敢肯定这非常容易,我今天刚搞定。

0 投票
1 回答
192 浏览

git - 找到做rebase的起点 -i

我在一个分支(当然是 master 的分支)工作,并且我有一系列提交。
我有兴趣确切地找出哪个提交是分支开始的地方并且是 master 的一部分。

为什么我需要这个?
我想用交互式 rebase 压缩所有提交,我想知道是否有一种简单的方法可以确定要传递给 rebase 命令的内容,而不是手动计算要传递的提交HEAD~52

0 投票
1 回答
12585 浏览

git - Git squash 在分支中间提交

我想在分支中间将多个提交压缩在一起,而不需要修改之前和之后的提交。

我有 :

我想把它压缩成

H相当于哪里B -- C -- D。我希望能够指定H. A是已推送的最后一次提交,因此之后的所有提交都可以重写而不会弄乱服务器。这个想法是在我快进之前清理历史master

我怎样才能做到这一点 ?

PS:请注意,在我的情况下,我实际上有超过 3 个提交在中间进行压缩,但如果我可以用 3 个来完成,我应该可以用更多来完成。

PPS:另外,如果可能的话,我更喜欢一个解决方案EF并且G保持不变(主要是关于提交日期)。

0 投票
2 回答
1882 浏览

git - GIT - 无法压缩提交:致命:需要一个修订版

我正在尝试用 git 压缩我的最后 2 次提交。在此示例中,我从另一个名为 develop 的分支创建了一个分支,并且我有 3 个新提交,这是 git log :

所以我想将提交 #3 和提交 #2 压缩为一个提交,我尝试:

我得到这个错误:

如果我做 :

工作正常,但我不想压缩所有 3 个提交,我只想要最新的 2 个。我已经读过当你没有足够的提交时会出现这个错误,但我肯定有 ¯_(ツ)_/¯