git rebase -i
允许通过squash
或fixup
将提交与前一个合并。这两个选项都需要至少一个提交为pick
-ed。当想要使用第一次提交但放弃其提交消息时,情况如何?换句话说,如果我希望第一次提交与后续合并,我该怎么办?如何将提交与git interactive rebase中的下一个提交合并?
1
A
回答
1
你只需要--root
标志(可用自1.7.12的Git,即对任何人,除某些无名从不更新的咳嗽* Centos的*咳嗽 Linux发行版)。
考虑到挤压一个和乙的结果是(排序提交的不相当遵守这个简单的代数运算,但它适用于我们的情况下)只是A + B。因此,由于B + A = A + B,无论您是否将#1提交到提交#2或提交#2提交到提交#1,都没有关系。当然,这并不包括压制在一起的提交的消息,所以让我们仔细看看。
假设您已运行git rebase -i --root
以便能够重新绑定包括根提交在内的所有内容。现在,您可以:
pick cb57fdd initial commit
pick 478acbd second commit
更改第二个到squash
和写入文件并退出编辑器。 Git的南瓜两个一起提交,并再次带来了你的编辑器,你可以看到:
# This is a combination of 2 commits.
# This is the 1st commit message:
initial commit
# This is the commit message #2:
second commit
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Sat Nov 19 14:44:07 2016 -0800
#
# interactive rebase in progress; onto 45bc10c
# Last commands done (2 commands done):
# pick cb57fdd initial commit
# squash 478acbd second commit
(精确的细节取决于你的Git版本,以及当然作为提交内容)。
既然你是在你最喜欢的编辑器中,很容易构造你想要的任何新的提交消息。例如,你可以删除整个第一个提交的消息,如果这是你想要的。做到这一点,写下文件,然后退出编辑器,你就完成了。
0
- 见分行的名称(比如,
branch-1
)
$ git branch
- 见第一提交哈希并保存其他人(比如第一个提交)
$ git log
- 退房得第一代提交
$ git checkout first-commit
- 更改提交信息
$ git commit --amend -am 'new-commit-msg' --allow-empty
- 现在保存新的提交哈希值(比方说,新commmit)
$ git log
- 回到你的 '分支1' 分支
git checkout branch-1
- 通过
new-commit
$ git replace first-commit new-commit
- 重写替换
first-commit
所有期货的提交基于上更换
$ git filter-branch -- --all
- 用力推动你的变化
git push -f origin HEAD
相关问题
- 1. git rebase interactive已经推送提交
- 2. 如何在rebase期间压扁(与下一个合并)提交?
- 3. Rebase/Replay仅合并提交
- 4. git合并重新提交提交到另一个提交?
- 5. git - 将一系列提交合并为一个提交
- 6. git撤消合并提交另一个合并提交
- 7. git rebase,提交重复
- 8. 如何git rebase合并提交共享远程分支?
- 9. 如何使用git pull自动保存合并提交--rebase?
- 10. 如何避免git rebase查杀合并提交?
- 11. 删除旧的提交:`git rebase`导致合并冲突
- 12. Git将多个提交集群集合成一个提交
- 13. 的Git合并提交
- 14. Git:只合并一个提交
- 15. 将本地Git提交到git-svn的一个提交中
- 16. git:合并两个分支并提交提交
- 17. 有没有办法将几个git提交合并为一个提交?
- 18. GIT rebase - 多个提交到一个 - 仍在历史中看到
- 19. Git合并提交丢失
- 20. Git合并跳过提交
- 21. git显示前几个提交回合并基的提交
- 22. 合并几个提交。 Git的变基
- 23. 如何在git中提交提交?
- 24. Git rebase交互式下降vs删除提交线
- 25. Git在合并之前合并提交
- 26. git rebase保持最近的提交
- 27. 为什么git提示我提交后合并提交消息?
- 28. Git合并中间提交的分支
- 29. 修复git中的合并提交
- 30. git rebase分支后推新提交
这是在第一次提交中编辑* message *的一种方法,但它不会压缩与另一次提交一起提交的内容,这是OP要求的。 (如果你打算使用'git filter-branch',你也可能不需要使用'git filter-branch',因为你可以在'git filter-branch'命令中完成整个工作,使用'--msg-filter',它由''if [$ GIT_COMMIT =];然后cat/tmp/newmsg; else cat; fi''或类似。) –
torek