Git add命令无法说出“添加”;“文件名太长”;

Git add命令无法说出“添加”;“文件名太长”;,git,version-control,Git,Version Control,我初始化了一个git存储库,以添加一个OracleWebLogicServer的本地实例(是的!),从而使用git对其进行版本设置 oracle文件位于c:\oracle中。所以我需要向git添加相同的内容 我发出了以下命令 git init(在c:\中,有Oracle目录) 在c:\中添加了一个.gitignore目录,并忽略了c:\中除Oracle之外的所有目录 然后运行“git status”以查看状态。正如所料,它显示了以下内容 C:\>git status # On branch

我初始化了一个git存储库,以添加一个OracleWebLogicServer的本地实例(是的!),从而使用git对其进行版本设置

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

我发出了以下命令

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

在c:\中添加了一个.gitignore目录,并忽略了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状态,以查看是否添加了这些文件

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)
C:\>git状态
#论分行行长
#
#初始提交
#
#未跟踪的文件:
#(使用“git add…”包含在将提交的内容中)
#
#.gitignore
#神谕/
提交时未添加任何内容,但存在未跟踪的文件(使用“git add”跟踪)
因此,似乎没有添加任何内容。这个文件夹对git来说太大了吗


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

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

我建议忽略
tmp
目录:

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

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

由于长文件名位于示例输出中的
tmp
目录中,通过忽略目录,
git add.
应该可以工作。

问题是特定于Windows的:git for Windows目前没有使用将
\\?\
预编到路径名的Win32 API破解来克服260个字符的标准路径名长度限制,并且您的路径名比限制长9个字符。

Cygwin救命!通过Cygwin的Git运行相同的命令对我来说很有效。

重新映射到更短的驱动器,就像这样
subst X:C:\\

--

我有一次类似的遭遇,证实了260个字符的限制

我的处理方法是使用
SUBST
(substitute)命令,该命令将任何长文件夹映射到单个字母驱动器,例如
SUBST X:C:\\


然而,在您的情况下,非常不幸的是,您只是在
C:\
中初始化了git,这是不寻常的&勇敢的:)

您为什么要在
C:\
中创建存储库,而不是直接在
C:\Oracle\
中创建存储库?确实如此。另外,我怀疑您是否真的想用Git跟踪tmp目录。@Chris用c:\这样做只是为了方便。如果我在c:\中初始化存储库,而不是在c:\Oracle\中初始化存储库,则必须能够更轻松地压缩整个c:\Oracle目录并根据需要将其发送出去,而不包括.git文件夹。git@user1324816如果您在
C:\Oracle\
中创建存储库,您应该能够使用
git archive--prefix创建一个适当的zip文件Oracle-o OracleWeblogicServer.zip
。但这并不能解决你的问题。您是否有该产品的源代码,或者正在尝试对应用程序服务器的编译版本进行版本设置?该问题已在msysgit 1.9中修复。请参阅我对“git pull中止,错误文件名太长”的回答。我忽略了tmp目录,并且能够将文件夹添加到git。两件事:我最初包括tmp目录,因为我想捕获应用服务器的整个状态,我不确定这个特定的tmp目录在这个意义上是否重要。但是现在因为我没有选择,我忽略了它。但我很想知道GIT的文件名(大小)限制,Mercurial不知道。但问题是windows特有的:我在Mac上创建了一条比你的长两倍的路径,Git对此没有问题。这个答案中真正值得注意的是,
Git add
在遇到任何错误时失败(如果操作的反馈让用户知道它是原子的,那就太好了)——upvote!
echo path/to/AdminServer/tmp >> .gitignore
git add .