2013-07-15 42 views
0

我有一個Web項目(PHP,JavaScript),我在Windows 8操作系統開發,並在git(位桶)存儲庫。現在我切換到Ubuntu 13.04(雙啓動),並使用相同的目錄進行開發(在lampp中的httpd.conf中分配htdocs文件夾),而不是創建新的目錄。現在我創建了另一個SSH密鑰,添加了它。但是,如果我使用'git status',它顯示我必須添加,提交併推送整個項目文件(處於修改狀態),儘管這不是這些文件已經在我從windows做的git repo中。我很困惑。任何人都可以幫助我嗎?GIT - 相同的目錄,但不同的操作系統行爲奇怪

+5

你有沒有檢查過你的行結束符設置?這是像你這樣的情況中最常見的問題。 – Danstahr

+0

@Danstahr ----聽不懂......請問這是什麼? – rafi

+0

@rafi_ccj:當你說「同一目錄進行開發」時,你的意思是Windows和Linux/Ubuntu訪問硬盤上的相同文件夾? –

回答

2

你將要閱讀這篇文章:https://help.github.com/articles/dealing-with-line-endings

背景:Windows使用結束字符比Unix和Mac不同的線路。這是跨平臺軟件開發的悲傷和痛苦的源泉。有時候,git會「修復」行結尾。這可以使用上述文章中的說明進行配置。然後Git會知道行結尾的變化並不意味着文件已經改變。

有時候,你的IDE注意到「哦,這個平臺的行結尾是錯誤的」並且修正了它們。由於這發生在沒有Git知道的情況下,它會看到「有人改變了很多文件」。

確定發生什麼的好方法是使用強大的diff工具,如kdiff3。它會告訴你諸如「文本文件除了行尾以外都是相同的」,或者當你比較文件時,你可以在文件名附近看到DOS模式和Unix模式。看到這個問題如何配置Git使用kdiff3:Using kdiff3 to edit diffs with git

+0

非常感謝!!!!你是幫助我解脫的人! (豎起大拇指) – rafi

+1

在你的情況(可能在任何情況下)我會建議將core.autocrlf設置爲false。這會讓你的文件保持原樣,如果所有其他工具都保持原樣,git會很開心。並且因爲重新啓動時不會對您的文件進行轉碼,所以這是「正確的設置」。 – mnagel

+0

@mnagel:你能告訴我請問,在哪裏做core.autocrlf爲false? – rafi

相關問題