私はgitで独特な動作を見つけました。私はいつも自分のマシンでそれを再現することができます。`git --git-dir/path/to/git pull/path/to/other/bare-git master`は、作業ツリーを自動的に更新しません。何故なの?
私は2つのローカルリポジトリを持っている場合は、同じ親フォルダ内の両方のフォルダexpress.git
、およびフォルダの急行内の作業ツリーと他の非裸、内部の裸の1が、私はexpress
内部からのコマンドgit pull ../express.git
を行うことができますフォルダ。これにより、express
内のすべてが自動的に更新されます。
しかし、いずれかのgitリポジトリにある場所からコマンドgit --git-dir /home/cisw470p/stu006/express/.git pull /home/cisw470p/stu006/express.git master
を実行すると、express
リポジトリに変更が反映されますが、作業ツリーは自動的に更新されません。私はgit add .
を実行してすべての変更を追加してからexpress
の中からもう1つのコミットをしなければならない。
--git-dirオプションを使用するコマンドの長いバージョンが、express
の作業ツリーを自動的に更新しないのはなぜですか?これには理由があるのですか?またはバグを見つけましたか?
編集:もう一度試してみましたが、別のファイルを編集していました。私は完全に失われています。
gitは長い形式の作業ツリーをどのように見つけられると思いますか?あなたは '--work-tree = ...' argを追加しようとしましたか? –
'express 'の中には、通常のレポのような' .git'フォルダとともに作業ツリーがあります。 – trusktr
'git'に明示的なgit-dirを与えるとき、なぜあなたはgit dirの親が作業木であると仮定することを期待していますか?これは、多くの場合かなり危険な仮定になる可能性があります(特にgit dirが実際に裸のレポである場合) –