我正在尝试从本地存储库推送到Windows共享中的远程存储库。
我将重新创建一个简单的场景,其中c是我的本地硬盘,n是映射的网络驱动器,并向您显示我遇到的错误。
创建本地仓库
user@PC-W7 /c/More_git
$ git init
Initialized empty Git repository in c:/More_git/.git/
创建远程仓库(如您所见,它已初始化,没有问题)
user@PC-W7 /n/git/central.git
$ git --bare init
Initialized empty Git repository in n:/git/central.git/
然后,我在本地存储库中添加了一个新的远程服务器,检查它是否确实有效,添加一个新文件并将其提交到我的本地存储库中
user@PC-W7 /c/More_git (master)
$ git remote add origin /n/git/central.git
user@PC-W7 /c/More_git (master)
$ git remote -v
origin n:/git/central.git (fetch)
origin n:/git/central.git (push)
user@PC-W7 /c/More_git (master)
$ git add a.txt
user@PC-W7 /c/More_git (master)
$ git commit -a -m "a.txt added"
[master (root-commit) c075576] a.txt added
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a.txt
至此,我已经准备好推进了,问题来了
user@PC-W7 /c/More_git (master)
$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 207 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: unable to create temporary file: File exists
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To n:/git/central.git
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to 'n:/git/central.git'
如果我执行相同的步骤,但是我将其推送到硬盘中的本地存储库,则它可以完美运行。起初我以为可能与权限有关,但是由于我能够创建裸存储库而没有问题..我陷入了困境。
有任何想法吗?
谢谢你。
编辑:
我在Novell网络下
更新
$ git version
git version 1.8.3.msysgit.0
并使用GIT_TRACE = 1和完整的UNC路径进行输出:
user@PC-W7 /c/More_git (master)
$ git remote set-url origin //vshare/DATA/PUBUSER/git/central.git
user@PC-W7 /c/More_git (master)
$ git remote -v
origin //vshare/DATA/PUBUSER/git/central.git (fetch)
origin //vshare/DATA/PUBUSER/git/central.git (push)
user@PC-W7 /c/More_git (master)
$ GIT_TRACE=1 git push origin master
trace: built-in: git 'push' 'origin' 'master'
trace: run_command: 'git-receive-pack '\''//vshare/DATA/PUBUSER/git/central.git'\'''
trace: built-in: git 'receive-pack' '//vshare/DATA/PUBUSER/git/central.git'
trace: run_command: 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
trace: built-in: git 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
Counting objects: 3, done.
trace: run_command: 'unpack-objects' '--pack_header=2,3'
Writing objects: 100% (3/3), 207 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: trace: built-in: git 'unpack-objects' '--pack_header=2,3'
remote: error: unable to create temporary file: File exists
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
trace: run_command: 'gc' '--auto' '--quiet'
trace: built-in: git 'gc' '--auto' '--quiet'
To //vshare/DATA/PUBUSER/git/central.git
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to '//vshare/DATA/PUBUSER/git/central.git'
我也尝试过使用GIT_TRACE和非UNC路径,结果是一样的,我不会发布它而不是使发布时间更长。
最佳答案
使用映射的网络驱动器的IP地址代替其UNC路径或字母可以解决此问题。
git remote set-url origin //ip-address/share/central.git