问题标签 [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.
git - Squash 直接在功能上提交,无需变基或合并
我一直在阅读一些关于--squash
ing 提交的内容,但它们似乎都与--rebase
.
我有一个功能分支,其中包含一组这样的提交:
假设我想合并回Master
分支,但我想先清理我的功能上的提交。
是否有可能:
- 选择提交 B、E 和 F 并将它们压缩在一起作为一个提交?
或者
- 我可以只压缩按顺序提交的提交,所以压缩:(A、B 和 C)或压缩(D、E 和 F)等?
无论哪种方式,我可以直接在我的功能上做一个壁球,而不立即初始化 aMerge
或Rebase
使用它吗?
如果是这样,我怎么能用 Git 做到这一点?
git - 哪些因素会影响 git repo 的大小
我想知道哪些因素会影响 git repo 的大小,当然数据除外。
历史悠久是否意味着大回购?有很多分支对它有影响吗?
另外你们如何处理你的提交?我读到每个提交都应该至少添加一个逻辑更改单元。我知道提交可以在推送之前通过变基来压缩。(当然永远不要变基发布)。
所以我不知道我是否应该把它们压扁。因为我不知道它是否会改变大小。
谢谢
git-commit - Git Squash 并删除以前的提交
也许我误解了 GIT 的工作原理。
我已经跑了git rebase -i HEAD~10
,我可以将 10 个提交压缩为一个。问题是所有压缩的提交仍然存在,我认为在将它们全部合并为一个之后它们会被删除。
这是预期的结果吗?如果是这样,我可以重写历史记录以删除无用的提交(因为这些更改已经在所有以前的提交都被压缩的提交中)?
windows - Git 压缩合并与缺少提交消息内容的冲突
当我执行git merge --squash <source_branch>
导致冲突的操作时,来自 Git 的预定义提交消息内容仅包含冲突信息,而不包含压缩提交的摘要。
如何让 Git 也包含有关已被压缩的提交的信息?通常 Git 会写“Squash of the following commits:”,然后显示git log
已放入 squashed 提交中的提交。
使用 git 版本 1.9.5.msysgit.1
git - 撤消git中的交互式rebase后恢复提交列表?
我的情况:有两个遥控器,origin
和fork
(后者归我所有)。我检查了origin/devel
,更改了一些代码并提交了 5x 到我的本地分支test
。我将我的提交推送到fork/test
.
然后我开始了一个交互式变基,在我的本地test
分支上:
Git 打开了一个编辑器,其中列出了我的 5 个提交,准备好选择、压缩或其他任何内容。
我不小心关闭了编辑器,而不是删除所有内容或 Ctrl+C 和git rebase --abort
git 控制台。因此,它开始了变基。
为了撤消它,我使用了git reflog
andgit reset --hard HEAD@{...}
以及git checkout fork/test -B test
后来,因为我的遥控器也应该包含 pre-rebase 状态。他们似乎都恢复了状态,但如果我再次启动 rebase,列表中将没有提交(只有一个noop
条目)。
如何恢复变基前的原始状态,以便再次显示原始提交列表?
撤消 git rebase不涉及此问题。我主要感兴趣的是为什么会发生这种情况以及如何真正恢复变基,而不是如何更改rebase
命令以再次获取提交列表(正如我所说,从我的角度来看git reset
并git checkout
没有正确撤消它)。
最终目标是在以后的某个时间将我的test
分支重新定位到最新origin/devel
的,压缩我自己的所有提交,因为test
从origin/devel
.
//编辑:看起来 Git 忘记了分叉点。但是,在我自己的提交之前git merge-base --fork-point origin/devel
确实返回了提交,并给了我初始提交列表。那么为什么不再这样做呢?origin/devel
git rebase -i that-commit
--onto
git - 'git rebase -i master' 是否错误且不确定当前状态
我正在使用本地存储库,并且没有上游存储库。我有一个分支“master”,其中 HEAD 指的是最近的提交。为了完成某件事*,我做了一个:
它打开了编辑器窗口,所以我可以挑选和挤压。不确定接下来要做什么,我关闭了编辑器(没有进行任何更改)并被 git 告知:
成功地重新设置和更新了 refs/heads/master。
这是 git 响应的总和。
我在这里有两个问题:
首先,我的分支实际上有什么变化吗?我的分支现在处于什么状态?(我意识到这是 1 中的两个问题。)
其次,如果这个命令有影响,我该如何撤消?
git - Git 与 --squash 合并,同时保留每次提交的日志
初始场景:
合并后我想要的--squash:
在分支master
上,git log
将是
继续在分支上开发development
:
再次与壁球合并:
在分支master
上,git log
将是
在分支development
上,git log
将是
我想与压缩的提交合并,master
同时保持每个提交都在development
.
我不知道如何实现。我的问题是我不知道如何在第一次合并中D
指出,并且将包含而不是仅包含。E
I
B,C,D,E,F,G,H
F,G,H
git - 如何使用 SmartGIT 在一次提交中压缩从分支到主控的多个提交?
我有一个名为work_in_progress的分支,用于调试和测试带有许多小提交的代码。它们都有多余的提交消息。完成后,我想将壁球合并到主分支。当使用--squash参数进行合并时,通常这是一个命令。
但是我该如何使用SmartGIT呢?
此处的文档How to perform squash merges似乎是错误的,因为没有选项"Branch contains selected commit and its parents"。
How to perform normal merges and squash merges here的文档根本不起作用。我已经尝试过了,我仍然在日志中看到所有的小提交。之后我可以删除work_in_progress分支,一切都很好,但我希望在主分支的历史记录中进行一次提交和一条提交消息。
编辑:这是我的提交对话框的屏幕截图。我想我错过了“简单提交”选项?!可能我没看懂说明书^^
编辑 2:这是日志的屏幕截图。从顶部开始的第二次提交是使用 SmartGIT 完成的。您可以看到所有中间提交(包括消息)在历史记录中可见。该分支被称为 XYZ_work_in_progress。最后一次(最重要的)提交是使用“git merge --squash ABC_work_in_progress”完成的,但所有的提交都被吞掉了,所以这是一个干净的历史。分支的所有工作都通过一条消息累积到一个提交中:-)
git - 提交 PR 并提交更改后是否可以压缩 Git 提交?
我们正在学习 Git,我们使用 GitHub 作为我们的托管站点。
我们都分叉了upstream
repo 并 PR 我们的提交upstream
以获取我们的更改。
我们正在尝试学习如何压缩我们的提交以保持上游提交历史的整洁(ish)。
我们经常承诺:)
所以......如果我们提交一个拉取请求......然后项目维护人员然后在提交上添加评论(即对 PR 进行代码审查)......然后开发人员将解决问题并推动他们再次提交。
是否可以压缩这些提交以使 PR 只有一个提交?GH 中的评论(针对此 PR)会发生什么?
git - 使用 TortoiseGit 通过 rebase-squash 影响远程存储库
正如标题所示
我正在尝试将最后两个提交压缩为一个
https://github.com/dvdvideo1234/Test
并将其注册到 Github 远程仓库中,尽管它只在本地进行更改,而不提交它们..
我正在通过日志窗口执行此操作。右键单击 B 然后“将 master 重新定位到此 ...”
在这个过程之后,我希望远程仓库是“A,BCD”,而不是我电脑上的本地仓库。
我应该如何通过 TortoiseGIT 做到这一点。我正在使用客户端在 Windows 下工作: