2012-12-11 111 views
0

我正在開展一個相當活躍的項目。要實現新功能,請創建一個新分支(「我的功能」)。爲了跟蹤主人在做什麼,我不時地按照以下步驟操作:git rebase,我想我做錯了什麼

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. 

比我必須通過我自己的代碼。衝突始終是我在「我的特徵」分支和同一行的更高版本中完成的較早更改。看起來rebase以某種方式混淆了提交的順序,我不知道。

在我修好之後,我將它們標記爲固定(git add),並致電git rebase --continue,這又導致類似的錯誤。比我必須重複這個步驟多次,直到rebase過程完成。

在主人那裏我沒有改變我在「我的功能」分支編輯的文件。所以我會認爲,一個rebase應該通過沒有任何衝突。只需引入所有其他更改,然後按照正確的順序將更改應用於其上。

我在做什麼錯在這裏?

謝謝!

+0

如果您厭倦了一次又一次解決相同的衝突,您可以啓用rerere:'git config --global rerere.enabled true' –

回答

3

這聽起來不像衝突,聽起來像有人添加了一個檢測空白錯誤的提交鉤子。

當您重新綁定時,您的功能分支提交將逐個重播。所以,你隨後修復一個空白錯誤的事實不會阻止git在重放較舊的提交時抱怨。

要麼使用rebase壓扁你的提交,所以你沒有在你的歷史中提交錯誤,或者只是停止rebasing。您可以合併master -> my-feature以使分支保持最新,然後僅在完成後才合併回去。

+0

提交鉤子?他在當地重新定居。 –

+0

是的,rebase正在創建本地提交。我沒有說一個_push_鉤子。 – Useless

+0

最有可能的一個客戶端預先提交鉤子,從它的聲音。 OP可以檢查'.git/hooks/*'來檢查錯誤是從哪裏來的。 – Useless

1

有時候git會給出空格的警告。如果你的文件的空白是不是顯著可以跳過這些警告此配置:

git config --global apply.whitespace nowarn 

如果你不想改變你的git的配置,你可以一邊做底墊使用的選項:

git rebase --ignore-whitespace