我正在开展一个非常活跃的项目。要实现新功能,请创建一个新分支(“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应该没有任何冲突。只需提取所有其他更改,然后按照正确的顺序应用我的更改。
我在这里做错了什么?
谢谢!
答案 0 :(得分:3)
这听起来不像冲突,听起来有人添加了一个检测空白错误的提交钩子。
当您进行rebase时,您的功能分支提交将逐个重播。因此,您随后修复了空白错误的事实不会在重放旧提交时停止git抱怨。
要么使用rebase来压缩你的提交,所以你没有历史记录中的错误提交,或者只是停止变基。您可以合并master -> my-feature
以使您的分支保持最新状态,然后仅在完成后合并。
答案 1 :(得分:1)
有时git会在空格上发出警告。如果您的文件中的空格不重要,则可以使用以下配置跳过这些警告:
git config --global apply.whitespace nowarn
如果您不想更改git配置,可以在执行rebase时使用该选项:
git rebase --ignore-whitespace