【发布时间】:2014-04-23 19:47:11
【问题描述】:
我的 git repo 的历史看起来像:
* (topic2) commit_11
* (topic1) commit_10
* commit_9
* commit_8
* (HEAD, master) commit_7
* commit_6
* commit_5
* commit_4 <- I wanted to edit this commit.
* commit_3
原来如此
git rebase -i commit_3
并在编辑器中将pick 替换为edit 以获取commit_4。
我更正了变量名中的一些拼写错误,然后
git add .
git commit --amend
(rename commit)
git rebase --continue
现在历史看起来像:
* (HEAD, master) commit_7.1
* commit_6.1
* commit_5.1
* commit_4.1 <- Edited commit.
| * (topic2) commit_11
| * (topic1) commit_10
| * commit_9
| * commit_8
| * commit_7
| * commit_6
| * commit_5
| * commit_4 <- Original commit.
|/
* commit_3
我想让我的历史像以前一样直截了当。我尝试了之前多次成功使用的方式
git checkout topic1
git rebase master
但在应用第一个补丁时会出现冲突。我手动解决了它们。但是当我尝试git rebase --continue 时,它告诉我“没有什么可提交的”。
如何处理这个问题,为什么会出现?
【问题讨论】:
-
我认为您有点滥用版本控制。如果您在 commit_4 中犯了错误,请在新的提交中修复它,如果您需要在不同的分支中进行修复,请将其挑选到其他分支中
-
如果这些都没有推送,也不是没有道理。
-
这次变基期间当前的分支是什么?我想如果你在 master 中重新编辑,然后在 master 上 rebase topic*,历史将是线性的。
-
@Netch,如果我理解你的话,我的情况就像你说的那样。
(HEAD, master)编辑前。git rebase master主题1 -
拥抱非线性版本历史,您的问题将神奇地消失。 git 不是 svn。
标签: git git-rebase git-rewrite-history