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

git - git 交互式 rebase squash 进入下一个提交

在 Git 中,我可以使用交互式 rebase 来重写历史记录,这很棒,因为在我的功能分支中,当我探索不同的重构和完成它的方法时,我使用部分工作代码进行了大量提交。

在将分支重新定位或合并到 master 之前,我想将很多提交压缩在一起。

有些按从第一个(顶部)到底部(最后一个)的顺序组成提交

假设我想保留提交 3、4 和 7。

使用 rebase 我想“压缩”提交

  • 1 和 2 进入 3。
  • 4 次住宿
  • 5和6进入7

理想情况下,我会在交互式变基中

但这是倒退的,因为 squash 将提交与之前的提交合并。我不知道如何使它向前挤压。

我是不是很难,我应该接受这行不通(我宁愿让它工作),还是有办法做到这一点?

我正在调用这个命令

然后我正在编辑出现的提交列表,并尝试通过保存文件并编辑编辑器来完成它,这通常对我有用。

0 投票
4 回答
24531 浏览

git - 如何将 3 个提交压缩为 1 个?

我对 git 还很陌生,所以我一直在试图弄清楚如何将 3 个提交压缩为 1 个,以便我的 PR 可以合并。我已经阅读了很多文档和指南,并且有点了解如何压缩提交,但我的一个提交没有出现。当我输入:“git rebase -i HEAD~5”时,我尝试附上我的提交照片和我的终端照片,但不幸的是我是一个新用户,所以我不能?但无论如何,我将非常感谢一些帮助。

0 投票
4 回答
1777 浏览

git - 在 git 中压缩和删除提交有什么区别?

假设我这样做

git rebase -i HEAD~3

并在文本编辑器中打开以下内容:

我想将这 3 个提交转换为 1 个提交,以便我可以将该提交推送到我的存储库,然后调用拉取请求。我知道有两种方法可以解决这个问题:

  1. 我可以留下一个提交pick并压缩另外两个。IE

    /li>
  2. 我可以删除这 3 个提交中的 2 个。IE

    /li>

这两个命令有什么区别?据我了解,每次提交都是项目的不同版本。因此,我的最新提交将是我的最新版本,对吗?所以我最新的提交就是我需要保留的所有内容。由于其他 2 个提交是项目的“旧”版本,因此我不需要它们,因此我可以删除它们。那么方法2是将我的 3 个提交转换为一个的正确方法吗?如果是这样,我需要什么样的情况来压缩我的提交?

这里的正确方法是什么?压缩或删除提交?

0 投票
2 回答
72 浏览

git - 压扁的提交与非压扁的提交相比如何?

假设我有一个master分支和一个dev分支。在dev分支工作后,我将其压缩并合并到 master

这是一个新的提交,对吧?不过好像跑git checkout dev; git merge master出来吐了already up-to-date。我不是在抱怨,但这怎么可能。应该有一个与所有被压扁的提交冲突的提交,不是吗?

编辑:没有错误,我只想知道为什么没有错误。

0 投票
3 回答
1267 浏览

git - 从其他分支压缩提交是否安全

有两个分支masterfeature

开发在feature分支中进行,并且在该分支中完成了多个提交,但在它们之间有几个与master分支的合并,因此功能分支的日志例如是这样的:

  • 功能提交 1

  • 主提交 1

  • 功能提交 2

  • 主提交 2

  • 功能提交 3

将所有这些提交压缩成一个是否安全feature commit 1

feature合并分支时有什么问题master吗?

0 投票
1 回答
1019 浏览

git - 压缩推送的 Git 提交的最佳实践是什么

到目前为止,我一直在做交互式 git rebase 相当频繁的工作:未推送的工作,或者我确信我是唯一一个工作的推送的工作。

我知道当涉及到协作工作时,压缩提交和整体重写历史可能会很棘手。

尽可能减少疼痛的最佳做法是什么?

如果我 squash 一些提交并 push,当他 pull 时,repo 在同事的站上会是什么样子?

  1. 当他没有做任何改变,只需要更新?
  2. 当他确实做了一些更改,并希望在提交之前进行更新?

我知道重写历史的概念是一场永无止境的辩论,但在这里我只是在寻找一种技术解决方案来处理这个问题。

0 投票
2 回答
1668 浏览

git - 如何合并到另一个只有两个提交并且一个提交被压缩的分支?

我创建了一个开发分支,它有一些无用的提交。现在我想将提交合并到主线分支。我想要在 origin/master 分支中的唯一提交是最新的提交和另一个将第一个提交压缩到第二个最新提交的提交。

编辑:对不起,如果这不清楚,让我试着让它更清楚。假设我在 dev 分支中有 5 个提交。我想将 dev 分支中所做的所有更改合并到 origin/master 分支。问题是我想将提交 #1-4 压缩为一个提交并将该提交和提交 #5 合并到 origin/master 分支。

0 投票
3 回答
885 浏览

git - squash 多个历史提交

我有大约 20000 次提交的 SVN 历史记录。我搬到了 Git 并保留了历史。现在我有 26000 个提交,我想将所有提交从 1 压缩到 20000。

  • 初始提交:a4f5d18
  • 迁移到 git:5a42d81
  • 头:933eff

我尝试检查 20000 并重新设置:

但我得到:

0 投票
1 回答
567 浏览

git - Git:将不同存储库的两个分支之间的差异作为单个提交推送到另一个存储库

我在一个私人 Gitlab 存储库上创建了我的公共 Github 存储库的一个分支。我在 fork 的一个分支中进行了多次提交,并希望将所有这些更改(公共 repo 分支和私有 repo 分支之间的差异)作为单个提交再次推送到 GitHub 上的公共 repo 分支。我只想使用命令行。

有人知道怎么做这个吗?
我认为这与 git squash 有关。

0 投票
1 回答
66 浏览

git - 如何处理许多进度提交

我喜欢经常提交代码的小而合乎逻辑的部分。如果我正在开发一个大型功能(2 周以上),将会有很多提交,例如:

  • 分页菜单控制器工作
  • XYZ 中的进度(在一天结束时保存工作,因此如果笔记本电脑丢失,则保存工作)

在功能结束时,有很多提交,我担心我会污染提交历史。我考虑过 Git squash,但是一旦你拉入更新,或者在你推送到你的分支之后,它就不起作用了。

我正在考虑尝试进行越来越大的提交,并在推送到我的 fork 功能分支之前在本地对小型提交使用 squash。但是,这似乎会阻碍我喜欢的详细提交历史。

这里最好的解决方案是什么?