2016-05-02 21 views
0

我有一臺Windows PC,並在同一臺PC上我有VMWare的播放器內的Lubuntu VM git的工作文件。如何獲得Linux的虛擬機(Windows主機上)來訪問上的共享目錄

我分享我的Windows文件夾,所以我可以從Lubunutu虛擬機中看到它們。

我的問題是,當我克隆Windows上的Git倉庫(使用Tortoise Git),然後嘗試從Lubuntu(從命令行使用Git)訪問它時,所有文件都顯示爲已修改,儘管我沒有更改它們。

我知道原因是Windows和Linux處理新行的方式不同。

我的問題是我怎麼可以配置在Windows和Lubuntu我的Git的安裝,所以我就沒有這個問題?

更新:

正如建議(由克雷格·埃斯特)這似乎並沒有被CRLF問題。我想上的共享目錄在我的Linux VM克隆回購,並得到以下錯誤:

fatal: 'origin' does not appear to be a git repository 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights 
and the repository exists.` 

我沒有問題,克隆虛擬機的本地驅動器上同一回購。

任何想法可能是什麼原因?

注:主要的原因我想這樣做是爲了讓我的虛擬機的驅動器體積小,使用共享驅動器儘可能。我的VM本地驅動器位於SSD驅動器上,共享驅動器位於更大的HDD上。

+2

據我所知,換行符就是_not_問題。在任何系統上,git都不會將'\ n'更改爲'\ r \ n'。如果文本文件具有CRLF,則它將在所有系統上具有該文件。更可能的是,以這種方式共享_working_目錄存在問題。分享_repo_文件可能會有更好的運氣。但是,我會讓Linux主機repo [非共享],並讓Windows有一個拉,每個都有一個單獨的私人工作目錄。與[samba]共享似乎有問題。如果你真的想要這樣做,可以創建一些測試倉庫並創建一些文件,以便首先查看它。 –

+1

更可能這與時間戳或權限有關,而不是CRLF問題。或者,兩個完全不同的系統嘗試從兩個不同的虛擬機同時訪問repo或work dir的文件鎖定問題,這兩個虛擬機只是半兼容的。 –

+0

您可以嘗試使用'git config --global core.autocrlf false'開始嗎? – VonC

回答

1

假設您將存儲庫放入Windows共享文件夾中。

安裝Mount shared folder on Ubuntu)在Ubuntu上共享文件夾,所以你可以克隆該存儲庫。 (說到你無法克隆,那肯定是另外一個問題,我測試過了,對我有好處)。

當你在該mount的那個倉庫中看到所有的文件都在Ubuntu上修改的時候,它應該是EOL問題。

在Windows上,autocrlf真正在默認情況下(假設您正在使用Git適用於Windows)。

當克隆Windows上的存儲庫,該文件將與結賬CRLF EOL。

但是,在Ubuntu上,默認情況下,autocrlffalse。在Ubuntu上安裝的版本庫中使用git,git預計EOL是LF。但是,EOL仍然是CRLF。這就是爲什麼git將所有文件視爲在Ubuntu上修改的原因。

要解決此問題,確保兩個操作系統使用相同的autocrlf值,或使用.gitattributes控制EOL。

例如,使用假值:

在Windows上,

  1. 刪除工作該資源庫的樹中的所有文件

    (注:如果你有本地修改,第一次提交他們)

  2. 運行git config core.autocrlf false僅針對該信息庫。或

    • 右鍵單擊該庫,請單擊TortoiseGit -> Setting
    • 在設置對話框,去Git節點,選擇local和取消選中AutoCrlf
    • 應用更改
  3. 執行混帳重置以使用正確的EOL返回所有文件。

    • 打開TortoiseGit日誌消息對話框
    • 在當前分支右擊並執行Reset "<current branch name>" to this
    • 選擇 「硬盤」 選項

在Ubuntu,你不應該看到修改的所有文件。

對於使用.gitattributes:

* -crlf

相關問題