2020-03-06

不用 git rebase 合并 commit 历史

Views: 6661 | Add Comments

不通过 git rebase 来合并 commit logs. 实在没弄明白 git rebase 为什么会要求我解决我从来没有修改过的文件冲突, 真是莫名其妙. 网上一大堆人深受其害. 大家 rebase 的目的非常简单, 就是要合并 commit logs. 在已经 merge from master 的情况下.

通过新建一个临时本地分支, 然后将代码合并(其实就是拷贝过来), 这样新分支就只有一条 commit log 了, 然后回去你的分支, 把你的分支重置为临时分支, 然后提交到远程.

为什么 git rebase 不能做这么简单的事?!

git checkout -b tmp master
git merge --squash my_feature
git commit
git checkout my_feature
git reset --hard tmp
git push -f
git branch -D tmp

据说, rebase 的原理是一个版本一个版本地 merge, 所以同一个文件你可能要解决一百次冲突, 而这个冲突是别人导致的别人已经解决过的, 然后你又重复解决别人引入和已经解决的冲突.

好像 git rebase -i 然后把中间的版本(pick xxx)删除即可?

git 这样解释:

当您执行 git rebase 操作时,通常会移动提交。 因此,您可能会遇到引入合并冲突的情况。 这意味着您的两个提交修改了同一个文件中的同一行,而 Git 不知道要应用哪个更改。

What the FUCK? 开什么玩笑? 我修改了同一行两次, 当然保留最新的修改! 谁神经病要保留旧的修改!

Related posts:

  1. git 常用操作
  2. Raft 为什么不能直接 commit 前任的日志?
  3. CVS笔记
  4. MySQL 在线增加从库
  5. 并发编程两原则
Posted by ideawu at 2020-03-06 18:22:59

Leave a Comment