件名の質問は、NON-NARE リポジトリ ( http://www.gitguys. com/topics/shared-repositories-should-be-bare-repositories/ )
前述の Web ページ内で、誰かが「git リポジトリ ユーザーとリモート ユーザーの両方が git オブジェクト データベースを更新する非ベア git リポジトリを作成した場合、非ベア git リポジトリの作成者は git status コマンドを 1 分間使用する」と説明されています。これを見てください: $ git status
# On branch master
nothing to commit (working directory clean)
その次の瞬間、リモート ユーザーは変更を非ベア リポジトリに git push することができました。次に、ベアでない git リポジトリの作成者が git status と入力すると、git は別のオブジェクト データベースを見つけ、この git status の実行に対して別の結果を返します。私は知っています: ユーザーが作業ディレクトリまたはオブジェクトデータベース内のファイルを変更しない限り、git status の出力は変更されるべきではありません!
このステートメントは、複数のユーザーがそのリポジトリを共有する中央リポジトリ環境で (非ベア リポジトリではなく) ベア リポジトリを使用する必要がある理由の背後にある理論的根拠であるため、これは「説明が難しい」と思います。このステートメントは私には正しくないように思われるため、複数ユーザーの開発環境で裸のリポジトリが必要な理由を説明するのが難しくなります。それは、GIT ステータスがサーバー リポジトリの状態の影響を受けることを暗示しているため、正しくありません。一方、git ステータスは、ローカルの .git ファイル オブジェクトと作業ディレクトリ (つまり、サーバー上ではない) のみを考慮に入れると考えていました/信じていました。
ベアリポジトリが共有環境に適していることを前提にせずに、ベアリポジトリが必要である理由を説明しようとしてきたことに注意してください-しかし、これまでのところ、あまり成功していません(このWebサイトを含め、おそらく私が目の前の問題を適切に提起していませんでした; 今回は、問題をレイアウトする限り、正しく理解できたことを願っています)
たとえば、複数のユーザー (ユーザー A とユーザー B の 2 人のユーザーを想定) で非裸のリポジトリを扱っている場合でも、変更のために git status を発行すると、ユーザー A が 2 つの異なる結果を得る可能性があることを誰かが説明できますか? 、続いてユーザー B による git push