[解決済み] "fatal: This operation must be run in work tree." というメッセージが表示されるのはなぜですか?
質問
Windowsにgitをインストールしたところです。GIT_DIR 変数を c:\git に設定し、この環境変数が cygwin によって維持されていることを確認しました (すなわち echo $GIT_DIR があるべき姿であること)。 gitリポジトリを作成したいフォルダ、仮にc:⇄wwwに移動して実行しました。
git init
git add .
すると、エラーが出ます。
fatal: This operation must be run in a work tree
何がいけなかったのかわかりませんが、c: \git ディレクトリには、config ファイルがあります。
[core]
repositoryformatversion = 0
filemode = false
bare = true
symlinks = false
ignorecase = true
これがむき出しになってはいけないのは間違いなく、我々の問題だ。
解決方法は?
エラーの直接の原因は、そうです。
git-add
をベアリポジトリで使用することができます。ベアリポジトリは、定義上、作業ツリーを持ちません。
git-add
は、作業ツリーからファイルを取得し、インデックスに追加してコミットの準備をします。
ただし、ここでの設定には少し工夫が必要かもしれません。GIT_DIR は、すべての git コマンドで使用するリポジトリディレクトリです。あなたは本当に、追跡するすべてのもの、もしかしたらあなたのシステム上のすべてのもののために単一のリポジトリを作ろうとしているのでしょうか?git リポジトリは、本来はひとつのディレクトリの内容を追跡するものです。そのため
GIT_WORK_TREE
を追跡したいものをすべて含むパスに設定し、さらに
.gitignore
を使用して、トラッキングに興味のないものをすべてブロックします。
例えば、以下のような場合です。
c:\www
? では、それを
c:\www
(GIT_DIRを設定しない)。これはgitの通常の使い方で、リポジトリはあなたの"module"のトップレベルディレクトリの.gitディレクトリに置かれます。
よっぽどの理由がない限りは、gitが好むやり方でいくことをお勧めします。もし追跡したいものがいくつもあるのなら、おそらく複数のリポジトリが必要でしょう。
関連
-
[解決済み】マージの競合が発生した git stash pop の取り消し
-
[解決済み】git rev-parseは何をするのですか?
-
[解決済み】GitHub: クローンには成功したが、チェックアウトに失敗した
-
[解決済み】未マージファイルがあるため、Gitマージができない
-
[解決済み】なぜこのマージが必要なのか、特に更新された上流をトピックブランチにマージする場合、コミットメッセージを入力してください。
-
[解決済み】Git Push Error: リポジトリデータベースにオブジェクトを追加する権限が不足しています。
-
[解決済み] [Solved] originにプッシュしようとすると、Gitが「No such remote 'origin'」と言うのはなぜですか?
-
[解決済み] 短いGitバージョンのハッシュを取得する
-
[解決済み] git でディレクトリ階層が異なる 2 つのブランチをマージするには?
-
[解決済み] ssh-keygen' は内部コマンドまたは外部コマンドとして認識されません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】マージの競合が発生した git stash pop の取り消し
-
[解決済み】git-mergeの-dry-runオプションはありますか?
-
[解決済み】なぜ「git commit」は私の変更を保存しないのですか?
-
[解決済み] [Solved] 作業ツリーのディレクトリ 'example.com' を作成できませんでした。パーミッションが拒否されました
-
[解決済み] 複数のgitコミットを元に戻すには?
-
[解決済み] GIT_DISCOVERY_ACROSS_FILESYSTEM が設定されていない。
-
[解決済み] 短いGitバージョンのハッシュを取得する
-
[解決済み] git リモートリポジトリには、ローカルブランチにマージされていないコミットが含まれています。
-
[解決済み] Gitのプッシュエラーです。Unable to unlink old (Permission denied)です。
-
[解決済み] 既存の空でないディレクトリをGitの作業ディレクトリに変換し、リモートリポジトリにファイルをプッシュする方法