git rebase,我想我做错了什么

时间:2012-12-11 15:37:37

标签: git

我正在开展一个非常活跃的项目。要实现新功能,请创建一个新分支(“my-feature”)。为了跟踪主人正在发生的事情,我不时采取以下步骤:

git checkout master
git pull
git checkout my-feature
git rebase master

一开始这个效果很好。但是几天后我不得不去做很多错误:


stdin:28: trailing whitespace.

stdin:80: trailing whitespace.

stdin:83: trailing whitespace.

warning: 3 lines add whitespace errors.

我必须自己完成代码。冲突总是由我在“my-feature”分支和同一行的更高版本中完成的旧更改。看起来rebase以某种方式混淆了提交的顺序,我不知道。

修复后我将其标记为已修复(git add)并调用git rebase --continue,这又导致类似错误。我必须多次重复这些步骤,直到rebase过程结束。

在master中,我在“my-feature”分支中编辑的文件没有变化。所以我认为一个rebase应该没有任何冲突。只需提取所有其他更改,然后按照正确的顺序应用我的更改。

我在这里做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:3)

这听起来不像冲突,听起来有人添加了一个检测空白错误的提交钩子。

当您进行rebase时,您的功能分支提交将逐个重播。因此,您随后修复了空白错误的事实不会在重放旧提交时停止git抱怨。

要么使用rebase来压缩你的提交,所以你没有历史记录中的错误提交,或者只是停止变基。您可以合并master -> my-feature以使您的分支保持最新状态,然后仅在完成后合并。

答案 1 :(得分:1)

有时git会在空格上发出警告。如果您的文件中的空格不重要,则可以使用以下配置跳过这些警告:

 git config --global apply.whitespace nowarn

如果您不想更改git配置,可以在执行rebase时使用该选项:

 git rebase --ignore-whitespace