Git,重新定位错误分支的分支

3
git clone blah
git checkout -b development
git checkout -b bug581
hack hack
git checkout -b bug588
hack hack

等一下,错误 588 应该来自开发,而不是 581。

git rebase --onto development bug581 bug588

给我:

Cannot rebase: You have unstaged changes.
Please commit or stash them.

出现错误,但我并不知道为什么?git status显示工作目录是干净的。那就为了好玩来点暂存吧。

git stash
git rebase --onto development bug581 bug588

现在它能工作了,但是它正在拉取错误581和588的历史记录,我只想要588的历史记录,而不是581中的内容。


1
请参见 http://stackoverflow.com/questions/4673952/fixing-published-branch-with-wrong-parent-branch。 - NamshubWriter
3个回答

6

我使用的是Mac电脑,这个不太常见的配置更改似乎解决了所有未暂存更改的问题,即使没有任何未暂存的更改。

git config --global core.trustctime false

我认为这与Windows文件时间、Linux文件时间和Mac文件时间之间的差异有关。如果您知道,请随意发表评论。


在进行了一系列重命名后,OSX Snow Leopard上出现了相同的问题,但在NFS挂载上工作正常。配置更改解决了问题--谢谢! - Grae Kindel

2
你是否开启了自动变基?
请查看你的~/.gitconfig或.git/config文件中的以下内容:
[branch "master"] rebase = true 或者
[branch] autosetuprebase = always

0

第二次输入“hack hack”是您的未提交更改发生的地方。


我认为从我的语言中很明显,任何更改都已提交,因此工作目录应该是干净的。 - jhogendorn
@devians:你从来没有提到过提交(commit)。我们是程序员,要精确。 - Arafangion
“git status 显示工作目录是干净的”这意味着如此。实际上,考虑到问题出在其他地方,我认为假设我总是有一个干净的工作目录是公平的。 - jhogendorn
@devians:嗯,你能确认文件行尾是否符合预期吗?我在Windows上遇到过一些奇怪的问题,特别是与crlf设置有关的问题。无论如何,你在哪个平台上? - Arafangion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接