Git克隆由于未跟踪文件而失败,但所有分支都是干净的

时间:2010-01-05 18:30:34

标签: 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.

3 个答案:

答案 0 :(得分:3)

你使用的是什么版本的Git?在什么平台上?

根据操作系统的不同,您可能会遇到一些区分大小写的文件名问题,可能会出现此错误消息,如this thread

所示
  
    
      

我将CONTRIB/ChangeLog重命名为CONTRIB/ChangeLog.old并再次尝试,这次它抱怨contrib/README
      是因为我做了什么错误?我

             

我认为这可能是因为我已将CONTRIB重命名为contrib。       在没有区分大写和小写名称的系统上,这可能导致冲突吗?

    
         

尝试删除整个CONTRIB目录。如果失败,请尝试获取repo的新克隆。

  
     

这解决了它。感谢。


  

但是,一旦我添加了该文件的副本(我需要)并提交了它,我再次尝试克隆并回到原来的失败消息

对我来说,尖叫core.ignorecase设置为真

  

core.ignorecase
  如果为true,则此选项启用各种变通方法,以使git能够更好地处理不区分大小写的文件系统,如FAT。   例如,如果目录列表在git期望“makefile”时找到“Makefile”,则git将假定它实际上是同一个文件,并继续将其记住为“Makefile”。

     

默认值为false,除了git-clone(1)git-init(1)将在创建存储库时探测并设置core.ignorecase为真。

您可以查看git config -l是否包含core.ignorecase设置吗?

答案 1 :(得分:0)

修改文件的通知:

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

表示您对相关文件进行了本地的,未提交的更改(仅在分支中跟踪)。

当您尝试将分支合并到主git时,拒绝使用分支中提交的版本覆盖未提交的更改。

在尝试合并之前,尝试将更改提交到分支上的文件。

顺便说一句,我认为你的意思是'合并'而不是'克隆'。您不应该在现有的git存储库上运行'git clone'。

答案 2 :(得分:0)

git clone用于创建新存储库,该存储库是现有存储库的克隆;也就是说,它具有所有相同的文件,分支和标签。

拥有存储库后,通常需要使用git pull来提取新更改并将其与活动分支合并,或git fetch将更改提取到远程跟踪分支中,而不将它们合并到您当前活动的分支(如果您确定要合并它们,则可以跟随git merge。)

有关如何克隆存储库以及如何使用克隆的示例,请参阅Git tutorial