2

これが私の問題です:

  1. 「プロジェクト」という名前の新しい git リポジトリを作成します。その中にいくつかのファイルがあります。
  2. そのリポジトリを次のようにクローンします。

    git clone --bare project project.git

  3. Git は次のように教えてくれます。
    Cloning into bare repository 'project.git'... done. error: refs/head/master does not point to a valid object!

  4. project.git という名前のディレクトリを取得しますが、続行すると:

    • git init --bare --shared project.git
    • git clone project.git project2
  5. Git は次のように教えてくれます。

    Cloning into 'project2'... warning: You appear to have cloned an empty repository. done.

したがって、複製されたリポジトリ「project2」にはファイルがありません。私が最初にこの問題に遭遇したのは、通常のように裸のクローンで共有しようとしていた既存のリポジトリでした。今では、私が作成したすべての新しいリポジトリで発生します。ただし、リポジトリを作成してから他のマシンにコピーし、その上にベア クローンを作成しても問題はありません。

何か案は?

ありがとう

アップデート:

この問題は、ローカル ディスクではなく、ネットワーク ドライブでのみ発生します。C はローカル ディスク、H はネットワーク ディスクです。

ローカル = 問題なし:

$ cd c:/temp
$ mkdir foo; cd foo
$ git init
Initialized empty Git repository in c:/temp/foo/.git/
$ echo 'a' > a; git add a; git commit -m 'a'
warning: LF will be replaced by CRLF in a.
The file will have its original line endings in your working directory.
[master (root-commit) f695c9d] a
warning: LF will be replaced by CRLF in a.
The file will have its original line endings in your working directory.
 1 file changed, 1 insertion(+)
 create mode 100644 a
$ cd ..
$ git clone --bare foo foo.git
Cloning into bare repository 'foo.git'...
done.
$ ls foo.git/
HEAD  config  description  hooks  info  objects  packed-refs  refs

ネットワーク ディスク = 問題:

$ cd h:
$ mkdir foo; cd foo
$ git init
Initialized empty Git repository in h:/foo/.git/
$ echo 'a' > a; git add a; git commit -m 'a'
warning: LF will be replaced by CRLF in a.
The file will have its original line endings in your working directory.
[master (root-commit) 5348b42] a
warning: LF will be replaced by CRLF in a.
The file will have its original line endings in your working directory.
 1 file changed, 1 insertion(+)
 create mode 100644 a
$ cd ..
$ git clone --bare foo foo.git
Cloning into bare repository 'foo.git'...
done.
error: refs/heads/master does not point to a valid object!
$ ls foo.git/
HEAD  config  description  hooks  info  objects  packed-refs  refs
4

2 に答える 2

0

これはあなたの結果と異なりますか:

$ mkdir foo; cd foo
$ git init
Initialized empty Git repository in /private/tmp/foo/.git/
$ echo 'a' > a; git add a; git commit -m 'a'
[master (root-commit) 235e657] a
 1 file changed, 1 insertion(+)
 create mode 100644 a
$ cd ..
$ git clone --bare foo foo.git
Cloning into bare repository 'foo.git'...
done.
$ ls foo.git/
HEAD        config      hooks/      objects/    refs/
branches/   description info/       packed-refs

もしそうなら、あなたの「プロジェクト」リポジトリに何か問題があることをお勧めします。たとえば、'project' でコミットしたことがない場合、次のようになります。

$ mkdir bar; cd bar; git init
Initialized empty Git repository in /private/tmp/bar/.git/
$ echo 'a' > a; git add a
$ cd ..
$ git clone --bare bar bar.git
Cloning into bare repository 'bar.git'...
done.
warning: You appear to have cloned an empty repository.
于 2013-06-24T14:42:02.783 に答える
-1

答えは本当に簡単です、私は同じ問題を抱えていました。GITはGoogleドライブが \refs\heads\master を更新することを許可していないため、コミットとプッシュを行ったマシンAと、クローンしようとしている別のマシンBで2つの異なる参照コードになります。 ..マシンBの参照コードを手動で変更すると完全に機能しますが、とにかく、コミットごとに毎回手動でマスターファイルを更新するのは無意味です:)

于 2015-03-05T05:27:29.680 に答える