2011-07-12 164 views
2

我需要幫助理解這種情況下的git rebase。我檢查了一個10天前創建的分支。我檢查了使用Git rebase爲創建天后的分支

git checkout -b <some name> origin/branchname 

(我只是用不同的名稱來標識它)

結賬後,我要是在這個被重訂簽出分支,

git rebase origin/master 

它顯示了一些錯誤,如 1)尾隨空格 - 我讀到這個,但即使嘗試了我在網上找到的這個命令後,我仍然看到警告。

git config core.whitespace nowarn 

2)自動合併 衝突(添加/加):合併衝突... 這些文件是在主分支,但內容被修改在結賬分支一點點。那麼我應該如何解決這個問題?如果這是解決問題的方法,我無權直接更改主內容。這些文件應具有此結帳分支的內容,以便測試將正常工作,因爲它是對that..please澄清我有關..

問候

+0

爲我的第一個問題,我遇到了這個http://stackoverflow.com/questions/2327917/git-svn-windows-linux-whitespace-problems,但有人可以請解釋我應該運行的命令,因爲我不'不明白從答案提供..謝謝。 – geej

回答

2

夥計們已經回答了有關空格的問題,但沒有涉及到問題的rebase部分。這是發生了什麼,當你變基:

首先你檢查出一些分支,然後對你說:

git rebase master 

這意味着,你想對當前HEAD(你的話題分支)重訂到主。 Git正在回顧你的主題分支的歷史和主分支的歷史,並發現它們都是第一個共同祖先的提交。此提交將成爲您的主題分支的舊基礎。然後,它會在您的分支中接受所有發生的提交,並按照當前主控上的順序「重新應用」它們。有時可能會發生衝突,然後rebase進程停止並等待您的解決方案。所以,你必須有通過編輯文件,然後將它們標記由git add conflicted_file 作爲解決這樣做時,你會不得不說git rebase --continue

現在你不這樣做,改變在主分支文件手動解決它們 - 改變正在發生在您的主題分支中,衝突解決方案會記錄在您的主題分支中。

希望有所幫助。

+0

是的,這有助於。所以我在主題分支上所做的更改與主界面中的更改相同?看起來只有在確信主題分支中的更改沒有必要時纔可以做到這一點......其他方面,爲什麼有人會解決它匹配與主內容相同的內容? – geej

+0

不,不是真的。主題分支中記錄的更改再次不會影響主分支。在重新分配操作期間,主機正在成爲主題分支提交的新基礎,但主指針不會移動。如果你想推廣rebase的結果給你的主分支,那麼你需要結賬到master分支並做「git合併主題」。這將導致快速前向合併,並且主指針將被移動以指向與主題分支相同的提交。 –

+0

你可以創建一個測試回購和兩個分支玩一些不同的東西,然後嘗試重新綁定另一個。在你運行之前運行「gitk --all&」。這將啓動歷史瀏覽器的GUI。然後,在執行每個操作後,按F5更新GUI。這應該告訴你這個過程如何工作以及結果如何 –

0

cd到您的回購協議.git文件夾。如果您使用未啓用的文件資源管理器來顯示前面的._隱藏文件或文件,則可能看不到此文件夾。在.git文件夾中,您將有一個名爲config的文件。在文本編輯器中打開它,你應該能夠看到一個名爲[core]的部分。在那裏添加whitespace = nowarn。如果您使用的是Linux機器,則您可以在.gitconfig的其他位置找到您的home目錄。如果它在Windows上取決於你如何安裝git(通過cygwin或msysgit)。

如果msysgit看到這個問題(Where does git config --global get written to?)的位置.gitconfig文件。如果它的cygwin,那麼你可以通過cat ~/.gitconfig看到它的內容。

1

如果這好比問題「git svn windows linux whitespace problems」你提什麼,然後命令將是:

git config core.whitespace nowarn 
git config core.autocrlf true 

(保留這些設置區域設置爲當前的回購)。
這將強制所有文件採用一種eol風格,防止原始文件/主文件與另一個eol相同的行與您自己的版本重新綁定(這將解釋CONFLICTS (add/add)錯誤消息)。

但我仍然懷疑autocrlf true,更喜歡managing eol style through .gitattributes files