2

Windows の Git に関連する問題に直面しています。git のリポジトリから変更をプルできません。変更を追加、コミット、プッシュすることはできますが、プルすることはできません。

エラーが表示されます: fatal: C:** \Git/libexec/git-core/git-pull は作業ツリーなしでは使用できません。

このエラーを検索すると、作業ツリーまたは作業ディレクトリ環境変数の削除を要求する SO に関するリンクがいくつかありました。このリンクは、それを解決する方法を引用するのではなく、git がどのように機能するかを説明しているように見え、Windows に固有のものはありませんでした。だからこの質問を投稿しています

私のは裸のリポジトリではありません。ここにgit構成ファイルの内容があります:

 [core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = https://username@github.com/Project/projectname.git
[branch "master"]
    remote = origin
    merge = refs/heads/master

Windowsで初めてgitを使用していますが、mysgitを使用しています。特別な手順なしでubuntuでgitを使用しているように、Windowsに固有の他のパラメーターまたはいくつかの環境変数をセットアップする必要がありますか?

このリンクも参照しましたが、この投稿で指定されているものが存在しないため、ドットは最新のようです。リンク

アドバイスやヘルプをいただければ幸いです。

ありがとう、この質問がこのフォーラムで適切かどうか、または SuperUser に投稿する必要があるかどうか教えてください。

編集:

Eckes が投稿した後、作業ツリーが見つからないというエラーを見つけるのに役立ちました。

私が取り組んでいるワークステーションには、もう 1 つのバージョンの git がインストールされていて、環境変数を確認すると、それに設定されていました。一度クリーニングすると、以前のエラーが発生しなくなりましたが、プルはまだ機能せず、エラーが発生しました。 :


編集

 remote: Counting objects: 132, done.
 remote: Compressing objects: 100% (64/64), done.
 remote: Total 104 (delta 74), reused 70 (delta 40)
 Receiving objects: 100% (104/104), 33.05 KiB, done.
 Resolving deltas: 100% (74/74), completed with 24 local objects.
 fatal: write failure on 'stdout': Bad file descriptor
 error: https://github.com/Project/projectname.git did not send all necessary objects
4

3 に答える 3

2

それは奇妙だ。Git/libexec/git-core/git-pull(現在)を見るとgit version 1.7.11.msysgit.0、コマンドがあります

require_work_tree_exists

コマンドは次のように実装されていGit/libexec/git-core/git-sh-setupます。

require_work_tree_exists () {
  if test "z$(git rev-parse --is-bare-repository)" != zfalse
  then
    die "fatal: $0 cannot be used without a working tree."
  fi
}

そのため、本当に裸のリポジトリにいない場合(つまり、投稿され.git/configたものが実際にあなたのリポジトリのものである場合)、これはメッセージを出力しません。

Git/libexec/git-core/git-sh-setupしかし、その文字列を出力する別のコマンドがあります。

require_work_tree () {
  test "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = true ||
  die "fatal: $0 cannot be used without a working tree."
}

2 つのメッセージのうちの1 つを変更して、どちらがあなたに本当に関連しているかを識別できるようにすることをお勧めします。git2 つ目は、git リポジトリ ディレクトリではないディレクトリでコマンドを発行している場合に発行されます。念のため: git pullgit リポジトリ内で実行する必要があります...


編集:何が問題なのかを確認するには、git bash
のコードを試してください。コードの部分にrequire_work_tree_exists入ってはいけません。then

于 2012-07-02T11:51:15.047 に答える