比如我最近的3个commit分别为:任务1、任务2、任务3.
现在我想将这3个commit合并为1个commit,并且将这个commit的信息改为“完成所有任务”。
我应该怎样操作?
比如我最近的3个commit分别为:任务1、任务2、任务3.
现在我想将这3个commit合并为1个commit,并且将这个commit的信息改为“完成所有任务”。
我应该怎样操作?
想要快捷、易用,那就用 GUI。
命令行下
如果是在 HEAD 的几个提交,你可以直接 reset 到 任务1^ 的前一个提交,然后重新 commit。
假设当前分支为 old,且已经在当前分支。
或者基于当前分支的 任务1 的前一个提交,新建一个分支(git checkout -b copy1 任务1^
),把当前分支的代码合并(git merge --squash old
),合并过来后,你现在再提交一次,就可以了。
当然,前面几个方法的限定就是 任务3 必须是 HEAD 指向的,说白了就是,只能处理最近的几个提交。
如果是任意位置的提交,那就需要使用 rebase,具体可以搜索 git rebase 合并提交
。
git rebase -i HEAD~3
进去后把你需要修改的那两个靠后commit的操作改成s,然后:wq
退出文件,就能进入commit信息的修改界面。最后就能将三个commit合并成一个。
虽然你题目没有提到命令行,我还是要多嘴一句。
千万不要沉迷命令行。
了解git命令的内涵就行,日常工作还是GUI爽
回到题目,我个人喜欢jetbrains系列很大一个原因就是因为它的git体验好
这个【压缩提交】就是你要的东西
git rebase -i HEAD~3
进去后把你需要修改的那两个靠后commit的操作改成s,然后:wq退出文件,就能进入commit信息的修改界面。最后就能将三个commit合并成一个。测试
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
8 回答3.6k 阅读
3 回答2.4k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
git merge --squash