3 回答
TA贡献1810条经验 获得超5个赞
您要执行的操作在git中称为“压缩”。执行此操作时有很多选择(太多吗?),但是如果您只想将所有未按下的提交合并到一个提交中,请执行以下操作:
git rebase -i origin/master
这将打开一个文本编辑器(-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
将第一个更改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
保存文件并退出编辑器。然后将打开另一个文本编辑器,使您可以将所有提交中的提交消息合并为一条大提交消息。
瞧!谷歌搜索“ git squashing”将为您提供所有其他可用选项的解释。
TA贡献1865条经验 获得超7个赞
如果提交次数很多,而您只想压榨最近的X次提交,请找到要开始压榨的提交的提交ID,然后执行
git rebase -i <that_commit_id>
然后按照leopd的答案所述进行操作,将除第一个之外的所有picks 更改为squashes。
范例:
871adf OK, feature Z is fully implemented --- newer commit --┐
0c3317 Whoops, not yet... |
87871a I'm ready! |
643d0e Code cleanup |-- Join these into one
afb581 Fix this and that |
4e9baa Cool implementation |
d94e78 Prepare the workbench for feature Z -------------------┘
6394dc Feature Y --- older commit
您可以执行以下操作(写入提交次数):
git rebase --interactive HEAD~[7]
或者这(写最后的哈希提交你不希望壁球):
git rebase --interactive 6394dc
- 3 回答
- 0 关注
- 662 浏览
添加回答
举报