简体   繁体   中英

Git (Windows) - failure cloning from a separate-git-dir repository

I've been struggling to find an answer to this for days:(

Can anyone confirm whether I've got the syntax right in the example below for 'Git clone' when attempting to clone FROM a repository that was initialized using --separate-git-dir?

If so, does this work on Linux systems?

With Git on windows (git version 1.7.6.msysgit.0 installed from GitExtensions224SetupComplete.msi) I get an error, as below, that looks as though 'Git clone' is expecting the repo to have a 'normal' integral.git dir

As --separate-git-dir is a fairly recent feature in msysgit perhaps the clone command doesnt yet support it?

F:\>mkdir repo2
F:\>mkdir repo2git
F:\>cd repo2
F:\repo2>call git init --separate-git-dir="..\repo2git\.git"
Initialized empty Git repository in F:/repo2git/.git/
F:\repo2>echo abc >file1.txt
F:\repo2>call git add . -A
F:\repo2>call git commit -m "first"
[master (root-commit) c7e4766] first
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 file1.txt
F:\repo2>cd ..
F:\>call git clone repo2 clone2
Cloning into clone2...
fatal: failed to open 'F:/repo2/objects': No such file or directory

Many thanks in advance for any insight into this.

After stepping through what you did here, your initial 'git init' is not right. You are having trouble cloning because your repository was not right to begin with. Here's what I did:

Travis@CASTLE ~/travtemp
$ git init travis
Initialized empty Git repository in c:/Users/Travis/travtemp/travis/.git/

Travis@CASTLE ~/travtemp
$ ls
repo2  repo2git  travis

Travis@CASTLE ~/travtemp
$ cd travis/

Travis@CASTLE ~/travtemp/travis (master)
$ touch t1

Travis@CASTLE ~/travtemp/travis (master)
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       t1
nothing added to commit but untracked files present (use "git add" to track)

Travis@CASTLE ~/travtemp/travis (master)
$ git add .

Travis@CASTLE ~/travtemp/travis (master)
$ git commit -m "first"
[master (root-commit) d93a0d0] first
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 t1

Travis@CASTLE ~/travtemp/travis (master)
$ git status
# On branch master
nothing to commit (working directory clean)

Travis@CASTLE ~/travtemp/travis (master)
$ cd ..

Travis@CASTLE ~/travtemp
$ git clone travis new
Cloning into new...
done.

Travis@CASTLE ~/travtemp
$ ls
new  repo2  repo2git  travis

There also additional information on the thread GIT clone repo across local file system

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM