「[リモート拒否] マスター ブランチは現在チェックアウトされています」というエラーが表示されます - 基本的に、この投稿の OP と同じ問題です ( Git プッシュ エラー '[リモート拒否] マスター -> マスター (ブランチは現在チェックアウトされています)' ) 、そして以下はそれを修正するために私がこれまでに行ったことですが、今では、上記の問題または新しい問題 - 「ワークツリーがありません」エラーのどちらかを選択できるようです。以下で説明するように、これは私が現在立ち往生しているところ。
また、他の質問とは異なる要件があることにも注意してください。ローカルマシンがコードをプル/プッシュする単一のリポジトリ(オリジン/リモート)だけで、ライブWebサーバーです。他の投稿では、これらの行に沿った要件は指定されていませんでしたが (このオプションはそこで扱われていませんでした)、私のニーズは非常に具体的であるため、この質問です。
また、ローカル ワークステーションからサーバー (リモート) にプッシュされるのではなく、サーバー上のこのディレクトリのファイルを (まだ Git を使用しているにもかかわらず) 直接編集する場合があることも避けられないことに注意してください。
最初にリポジトリをリセットし、ベアに設定します (最初にサーバーに Git をセットアップした開発者はgit init
、リポジトリをセットアップするときにのみコマンドを使用しました)。
git init --bare
次に、すべてのサーバー ファイルが既に存在していた (空のディレクトリではない) ため、次の方法 (通常) で最初のコミットを行いました。
git add .
git commit -m "initial commit"
.git/config
次に、ファイルを次のように編集しました。
git config receive.denyCurrentBranch ignore
私の現在のサーバー.git/config
ファイルは次のようになります。
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[receive]
denyCurrentBranch = false
コミットを正常にプッシュできますが、これを適用しようとすると:
git checkout -f
上で提案したように (おそらくすべてのコミットを受け入れ、HEAD をリセットしてすべての変更を含めるには?)、次の致命的なエラーが発生します。
fatal: This operation must be run in a work tree
ワークツリーをこのディレクトリに設定する必要がありますか? もしそうなら、どうすればいいですか?そして、私がそれを行った場合、結果は依然として私の述べた目標に沿っています(繰り返しますが、個別のベアリポジトリと非ベアリポジトリはありません-ライブWebサイトにもサービスを提供し、Webルートにある単一のディレクトリのみです) ?
私が行方不明になっていることを他に何かする必要がありますか?
私はこのトピックに関するstackoverflowを広く読ん で います .特にこちら: http://git-scm.com/book/ch2-2.html ) Git-Flow (nvie): http://nvie.com/posts/a-successful-git-branching-model/
すべてのヘルプとコメントは大歓迎です。ありがとうございました!