Git add命令失败,说“文件名太长”

时间:2013-12-20 18:32:46

标签: git version-control

我初始化了一个git存储库,用于添加Oracle Weblogic服务器的本地实例(是!),使用git对其进行版本化。

oracle文件位于c:\ Oracle中。所以我需要将相同的内容添加到git

我发出了以下命令

git init(在c:\中有Oracle目录)

在c:\中添加了一个.gitignore dir并忽略了c:\中除Oracle之外的所有目录

然后运行'git status'来查看状态。正如预期的那样,它显示了以下内容

C:\>git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       Oracle/
nothing added to commit but untracked files present (use "git add" to track)

现在,我做了一个git add * 上面的命令按预期抛出一些详细的输出,显示正在添加的文件并以下面结束(命令输出的尾部显示在下面)

....
base_domain/servers/AdminServer/tmp/.appmergegen_1387484701373_liferay-portal-6.
1.30-ee-ga3-20130812170130063.war/html/VAADIN/themes/runo/tree/tree.css.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in Oracle/Middleware/user_projects/domains/
base_domain/servers/AdminServer/tmp/.appmergegen_1387484701373_liferay-portal-6.
1.30-ee-ga3-20130812170130063.war/html/VAADIN/themes/runo/window/window.css.
The file will have its original line endings in your working directory.
fatal: unable to stat 'Oracle/Middleware/user_projects/domains/base_domain/serve
rs/AdminServer/tmp/.appmergegen_1387484701373_liferay-portal-6.1.30-ee-ga3-20130
812170130063.war/html/VAADIN/widgetsets/com.vaadin.portal.gwt.PortalDefaultWidge
tSet/043D1FB3F694D0D6D3ACFB33DB80E43D.cache.html': Filename too long

然后我发出了一个git状态以查看是否添加了文件

C:\>git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       Oracle/
nothing added to commit but untracked files present (use "git add" to track)

所以似乎没有添加任何东西。该文件夹对于git来说太大了吗?

每当我使用存储库时,我都尝试过Bazaar及其GUI控件冻结。现在我正在尝试使用Mercurial来查看它是否可以处理它。

4 个答案:

答案 0 :(得分:8)

重新映射到此subst X: C:\<__relevant_lengthy_path__>\

之类的较短驱动器

-

我遇到类似的遭遇,确认了Max Path length for Windows

的260字符限制

我处理的方式是使用SUBST(替换)命令将任何冗长的文件夹映射到单个字母驱动器,例如subst X: C:\<__relevant_lengthy_path__>\

然而,在你的情况下,很遗憾你只是在C:\中使用了git,这是不寻常的&amp;勇敢:)

答案 1 :(得分:6)

我严重怀疑你真的需要那个.../tmp/...目录。出现任何错误时,git add会失败。如果添加您指定的任何文件时出现问题,则不会添加任何内容。

我建议忽略tmp目录:

echo tmp >> .gitignore
git add .

这将忽略项目中的所有tmp目录。如果要忽略特定的tmp目录,可以指定其完整路径:

echo path/to/AdminServer/tmp >> .gitignore
git add .

由于长文件名位于示例输出中的tmp目录中,因此忽略git add .应该有效的目录。

答案 2 :(得分:5)

Cygwin救援!通过Cygwin运行相同的命令Git为我工作。

答案 3 :(得分:4)

问题是特定于Windows的:Git for Windows目前没有使用Win32 API hack将\\?\添加到路径名以克服260个字符的标准路径名长度限制,并且您的路径名长于9个字符。限制。