muu*_*ope 373 git git-squash
我在本地存储库上有一堆提交,它们在主题上相似.在推送到遥控器之前,我想将它们组合成一个提交.我该怎么做?我认为rebase
这样做,但我无法理解文档.
Leo*_*opd 575
你想做的事情在git中被称为"挤压".当你这样做时(有太多?)有很多选项,但如果你只想将所有未删除的提交合并到一个提交中,请执行以下操作:
git rebase -i origin/master
Run Code Online (Sandbox Code Playgroud)
这将打开您的文本编辑器(-i
用于"交互式"),其文件如下所示:
pick 16b5fcc Code in, tests not passing
pick c964dea Getting closer
pick 06cf8ee Something changed
pick 396b4a3 Tests pass
pick 9be7fdb Better comments
pick 7dba9cb All done
Run Code Online (Sandbox Code Playgroud)
将所有内容更改pick
为squash
(或s
)除第一个之外:
pick 16b5fcc Code in, tests not passing
squash c964dea Getting closer
squash 06cf8ee Something changed
squash 396b4a3 Tests pass
squash 9be7fdb Better comments
squash 7dba9cb All done
Run Code Online (Sandbox Code Playgroud)
保存文件并退出编辑器.然后打开另一个文本编辑器,让您将来自所有提交的提交消息组合成一个大提交消息.
瞧!谷歌搜索"git squashing"将为您提供所有其他可用选项的解释.
Noi*_*ich 74
如果你有很多提交并且你只想压缩最后的X提交,找到你要从中开始压缩的提交的提交ID,并且
git rebase -i <that_commit_id>
Run Code Online (Sandbox Code Playgroud)
然后按照leopd的回答中所述进行操作,将所有pick
s 更改为squash
es,除了第一个.
vik*_*027 33
这里有很多工作的答案,但我发现这是最简单的.此命令将打开一个编辑器,在那里你可以替换pick
使用squash
,以消除/它们合并成一个
git rebase -i HEAD~4
Run Code Online (Sandbox Code Playgroud)
其中,4
是你要压缩成一个提交的数量.这也在这里解释.
Jus*_*iss 25
您可以执行此操作git rebase -i
,传入要用作"root"的修订:
git rebase -i origin/master
Run Code Online (Sandbox Code Playgroud)
将打开一个编辑器窗口,显示您在上次提交后所做的所有提交origin/master
.您可以拒绝提交,将提交压缩为单个提交,或编辑以前的提交.
有一些资源可以更好地解释这一点,并展示一些其他示例:
http://book.git-scm.com/4_interactive_rebasing.html
和
http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
是我能找到的前两个好页面.
rue*_*ste 12
我想出来了
#!/bin/sh
message=`git log --format=%B origin..HEAD | sort | uniq | grep -v '^$'`
git reset --soft origin
git commit -m "$message"
Run Code Online (Sandbox Code Playgroud)
从提交消息中组合,排序,统一和删除空行.我使用它来对github wiki进行本地更改(使用gollum)
我的squashing
多重方式push
是(也许你推到自己的分支许多提交,现在你想做一个拉请求,你不想让它们与你已经推过的许多提交混乱).我这样做的方式(据我所知,没有其他更简单的选择).
squash
(从您希望提取请求的原始分支分支).例:
git checkout from_branch_you_wish_to_pull_request_to
git checkout -b new_branch_will_have_single_squashed_commit
git push -u new_branch_will_have_single_squashed_commit
git merge older_branch_with_all_those_multiple_commits
git rebase -i (here you squash)
git push origin new_branch_will_have_single_squashed_commit
Run Code Online (Sandbox Code Playgroud)
您现在可以将请求拉入 from_branch_you_wish_to_pull_request_to
归档时间: |
|
查看次数: |
206885 次 |
最近记录: |