リモートリポジトリを設定し、新しい変更をプッシュすることはできますが、そこから取得することはできません。常に(むしろ不可解な)エラーメッセージが表示されます。
fatal: Refusing to fetch into current branch refs/heads/master of non-bare repository
fatal: The remote end hung up unexpectedly
どういう意味ですか?フェッチを有効にするにはどうすればよいですか?
(このリモートリポジトリはバックアップリポジトリとしてのみ使用されるため、ローカルリポジトリの正確なコピーである必要があります。プッシュできてもフェッチできない理由を本当に理解できません...)
私の設定は次のようになります:
[remote "Origin"]
url = ssh://blablablah
fetch = +refs/*:refs/*
mirror = true
あなたがやろうとしているのは、作業中のブランチを取得することです。つまり、masterブランチでareを更新しようとします。それは可能ではありません。 remotes/*
ブランチを更新してからローカルブランチにプルするのがより一般的です。あなたが望むのは、おそらく、
git remote add otherrepo thehost:/the/path.git
これにより、リポジトリがremotes/otherrepo/*
にフェッチされるようにセットアップされます。 git fetch otherrepo
はトリックを行う必要があります。別の方法として、手動で.git/config
を編集し、リモートのfetch
をrefs/heads/*:refs/remotes/otherrepo/*
などに設定できます。
特に現在のブランチにフェッチするために誰かがこれを見つけた場合は、--update-head-ok
国旗。 ドキュメント から:
-u
-update-head-ok
デフォルトでは、git fetchは現在のブランチに対応するヘッドの更新を拒否します。このフラグはチェックを無効にします。これは、純粋にgit pullがgit fetchと通信するための内部使用であり、独自の磁器を実装する場合を除き、使用することは想定されていません。
場合によっては、自動化やツールなどの独自の磁器コマンドを実装したいことがあります。
また、これはmasterブランチにいて、最新のものを取得したい場合に動作します
git pull Origin マスター
リポジトリを取得するのではなく、思いがけずにリポジトリを複製したため、両方のリポジトリがマスターであったため、この問題が発生しました。リモートリポジトリで作業を行っていない場合は、次のように基本的なgitコマンドで問題を修正できます。(1)リモートリポジトリを削除する、(2)ローカルリポジトリをリモートリポジトリがあった場所にコピーする、(3)削除するローカルのもの、そして(4)を使用してローカルリポジトリを設定
git init; git fetch $REMOTE_GIT_REPOSITORY_URL
その後、git pull
とgit Push
が正しいことを行います。 Michaelのより効率的で原則的な答えによると、git remote
を回避する利点は、ブランチを追跡するセマンティクスについて考える必要がないことです。
致命的:非ベアリポジトリの現在のブランチrefs/heads/BRANCHNAMEへのフェッチを拒否
ブランチBRANCHNAMEをローカルに作成してから、コマンド「git fetchアップストリームpull/ID/head:BRANCHNAME」を実行し、致命的:現在のブランチrefs/heads/BRANCHNAME以外へのフェッチを拒否しました-bare repository
その後、ブランチを削除して、同じコマンドをもう一度呼び出します。
実際、プルリクエストブランチをチェックアウトしていました。
実際にGitコマンドをコマンドラインに入力していますか、それとも独自のコードからGit実行可能ファイルを実行していますか?
コードから実行している場合、Gitが正しいローカルディレクトリにフェッチしようとしていると確信していますか?
これを行うには、2つの方法があります。
Gitを実行する前に、プログラミング言語が提供するオプションを使用して、正しい作業ディレクトリを設定します
( C#の例 、これは私が使用しているものだからです]
常に -C
パラメーター をGitに渡して、ローカルリポジトリのディレクトリを指定します。
C#コードからGit実行可能ファイルを呼び出しているプロジェクトがあり、誤って-C parameter
を設定するのを忘れたときの質問と同じエラーメッセージが表示されました。