2010-01-05 150 views
2

我試圖克隆一個git存儲庫。克隆失敗並顯示以下消息:由於未跟蹤文件,Git克隆失敗,但所有分支都乾淨

Untracked working tree file ... would be overwritten by merge. 

我已在所有分支上運行git clean;沒有未跟蹤的文件。
標記爲未跟蹤的文件僅用於我當前正在使用的分支中並對其進行跟蹤。

此外,當我簽出主分支,然後簽出我最初正在使用的分支時,我檢出成功,但打印了所謂未跟蹤文件的名稱。任何想法這意味着什麼?

Checking out files: 100% (477/477), done. 

M  path-to-file-idenetified-as-untracked  
Switched to branch "Original_branch_name" 

如何讓克隆工作?

我已閱讀關於克隆。我正在製作一個克隆,因爲我想與目前沒有這個回收的其他人分享。

這是我輸入的,稍作修改。例如,我做了幾個命令cd,但沒有顯示。

$ git clone app.git clone/app.git 
Initialized empty Git repository in /cygdrive/c/clone/app.git/.git/ 
error: Untracked working tree file 'C:/app.git/include/template/foo.xml' would be overwritten by merge. 

$ git status 
# On branch GT 
nothing to commit (working directory clean) 

$ git rm include/template/foo.xml 
rm 'include/template/foo.xml' 

$ git commit -m "Removed include/template/foo.xml because clone was failing with the message untracked working tree file would be overwritten by merge " 
[GT]: created 77ca4ec: "Removed include/template/foo.xml because clone was failing with the message untracked working tree file would be overwritten by merge " 
1 files changed, 0 insertions(+), 89 deletions(-) 
delete mode 100755 include/template/foo.xml 

$ git clone app.git clone/app.git 
Initialized empty Git repository in /cygdrive/c/clone/app.git/.git/ 
Checking out files: 100% (522/522), done. 

$ git commit -m "Added file deleted in previous commit after successfully cloning repository with file deleted" 
[GT]: created f3eb7e8: "Added file deleted in previous commit after successfully cloning repository with 
file deleted" 
1 files changed, 89 insertions(+), 0 deletions(-) 
create mode 100755 include/template/foo.xml 

$ git clone app.git clone2/app.git 
Initialized empty Git repository in /cygdrive/c/clone2/app.git/.git/ 
error: Untracked working tree file 'C://app.git/include/template/foo.xml' would be overwritten by merge. 
+1

您確定您的意思是'git clone'嗎?你能在發佈這些錯誤時發佈你試圖運行的命令嗎? – Frosty 2010-01-05 20:13:24

+0

剛剛更新了我的答案和一個設置來檢查。 – VonC 2010-01-05 22:43:03

+0

你永遠不需要'克隆'兩次; 'clone'基於遠程創建一個新的本地存儲庫。一旦你有一個回購協議,你可以使用'git pull'或'git fetch'進行修改,然後使用'git merge'。因此,我們可以瞭解您遇到的問題,您是否可以編輯您的問題併發布您正在運行的確切命令? – 2010-01-05 23:02:33

回答

3

你使用的是什麼版本的Git?並在什麼平臺上?

根據OS的不同,你可能有一些區分大小寫的文件名的問題至極可能帶來此錯誤信息,如圖this thread

我改名CONTRIB/ChangeLogCONTRIB/ChangeLog.old了一次又一次,這一次它抱怨contrib/README
因爲我做了什麼而出錯?我

我相信這可能是由於我已將CONTRIB更名爲contrib
在大小寫名稱沒有區別的系統上,這可能會導致衝突嗎?

嘗試刪除整個CONTRIB目錄。如果失敗,嘗試獲取新的回購克隆。

固定它。謝謝。


但是,一旦我添加的文件的複印件(我需要),並提交它,我試圖重新克隆和我回到原來的失敗消息

那我尖叫core.ignorecase設置爲true

core.ignorecase
如果爲真,此選項啓用各種解決方法,使git能夠更好地處理不區分大小寫的文件系統,如FAT。
例如,如果一個目錄列表在git預計爲「Makefile」時發現「makefile」,那麼git會認爲它確實是相同的文件,並繼續記住它爲「Makefile」。

缺省值爲false,除了git-clone(1)git-init(1)將探測並設置core.ignorecase如果適當,則創建存儲庫時爲true。

您能否檢查git config -l是否包含core.ignorecase設置?

+0

我在Cygwin上使用Windows。 Git版本是1.6.1.2。 我做了rm文件,然後提交。然後我試圖克隆,這是成功的。但是,一旦我添加了該文件(我需要)的副本並將其提交,我試圖再次克隆並回到原始的失敗消息。 – Jennette 2010-01-05 22:29:55

+0

git config -l只顯示我的用戶名和用戶的電子郵件 – Jennette 2010-01-05 23:47:39

+0

那麼......解決方案是什麼? – 2013-05-28 17:02:13

0

該文件被修改的通知:

M  path-to-file-idenetified-as-untracked 

意味着你必須有問題的文件本地,未提交的修改(這是隻有在分支跟蹤)。

當您嘗試將分支合併到主控制器中時,git拒絕使用分支中提交的版本覆蓋未提交的更改。

在嘗試合併之前,嘗試將更改提交到分支上的文件。

順便說一句,我假設你的意思是'合併',而不是'克隆'在你的問題。你不應該在現有的git倉庫上運行'git clone'。

+0

謝謝你的建議。我無法提交更改,因爲我的分支沒有顯示未提交的更改。 我的意思是克隆,而不是合併。我正在將整個存儲庫的克隆發送給某人。當我運行克隆時,它顯然會合並。爲什麼我不應該在git倉庫上運行'git clone'?什麼時候會使用'git clone'? – Jennette 2010-01-05 22:40:51

+0

'git clone'用於在新位置創建存儲庫的副本。在運行克隆命令之前,clone/app.git和clone2/app.git中是否有文件? – Frosty 2010-01-06 14:58:45

0

git clone用於創建新存儲庫,該存儲庫是現有存儲庫的克隆;也就是說,它具有所有相同的文件,分支和標記。

一旦你有一個倉庫,你通常要使用git pull拉新的變化下來,並把它們合併與活躍的分支,或git fetch獲取變爲你的遠程跟蹤分支,而不把它們合併到你當前活動的分支(可能如果你決定你想合併它們,那麼後面跟着git merge)。

查看Git tutorial瞭解如何克隆回購和使用克隆的示例。