web-dev-qa-db-ja.com

Git:「作業ディレクトリ」はどこにありますか?

いくつかのGitチュートリアルを行っています。 「working directory」の概念は言及され続けていますが、私が読んだチュートリアルやドキュメントでは、この「working directory」がどこにあるのか、何を指しているのかを指摘していません。

私はそれが実際に.gitの親ディレクトリ、別名a.k.a実行するディレクトリgit init in。しかし、私が見ているビデオチュートリアルでは、nothing to commitおよび "working directory clean"の状態について話しています。

実際、実際にリポジトリのコピーを作成し、そのコピーを作成して作業ディレクトリがないようにすることができます。これは実際にはベアクローンと呼ばれます。これは実際にはGitHubが使用するものです。

working directory」の理解が正しい場合、リポジトリに「working directory」を持たない方法はありますか?また、GitHubで「bare clone」を使用すると言われた場合、どういう意味ですか?

22
shenkwen

うまくいけば、次のことがわかります。

Git initコマンドとgit init --bareコマンドを使用して作成されたリポジトリの違いは何ですか?

Git initコマンドで作成されたリポジトリは、作業ディレクトリと呼ばれます。リポジトリーの最上位フォルダーには、次の2つのものがあります。

A .git subfolder with all the git related revision history of your repo
A working tree, or checked out copies of your project files.

Git init --bareで作成されたリポジトリは、ベアリポジトリと呼ばれます。これらは、作業ディレクトリとは少し構造が異なります。まず、ソースファイルの作業コピーまたはチェックアウトコピーは含まれていません。 2番目に、ベアリポジトリは、リポジトリのgit改訂履歴を.gitサブフォルダーではなく、リポジトリのルートフォルダーに保存します。注…むき出しのリポジトリには、通常.git拡張子が付けられます。

John Saints-ベアgitリポジトリとは?

つまり、裸のgitクローンには、チェックアウトされたコードの作業ディレクトリが含まれていません。
それを単に.gitディレクトリ(Gitデータベース)には何もありません。

13
jacmoe

これは、プロジェクトをチェックアウトする場所です。たとえば、プロジェクトのブランチをチェックアウトしたディレクトリ。通常、.gitフォルダーを含むフォルダーです。これが作業ディレクトリです。チェックアウトしたブランチのファイルに変更を加えると、作業ディレクトリに変更が加えられます。この時点で、作業ディレクトリにはコミットされていない変更があります。したがって、最初にコミットを行っていない場合、変更がないため作業ディレクトリはクリーンになります。

6

作業ディレクトリは、単に、作業中の現在のローカルディレクトリです。たとえば、リモートブランチとしてmaster、devおよびyourname-devがある場合、checkout from dev to yourname-devyourname-devは、この(yourname-dev)作業ディレクトリから別の言い回しdevdevが新しい作業ディレクトリになりました

4
Babajide Apata

ドキュメント によると:

最後に、作業ディレクトリがあります。他の2つのツリーは、.gitフォルダー内にコンテンツを効率的だが不便な方法で保存します。作業ディレクトリはそれらを実際のファイルに解凍します。これにより、編集がはるかに簡単になります。作業ディレクトリをサンドボックスと考えてください。ここでは、変更をステージングエリア(インデックス)にコミットしてから履歴にコミットする前に変更を試すことができます。

2
Michael Ma

他の2つの答えを組み合わせるには:

Gitドキュメンテーション: で述べられているように

作業ディレクトリは、プロジェクトの1つのバージョンの単一のチェックアウトです。

これは本質的に、ブランチ(例:マスター)をチェックアウトし、特定のコミット(例:HEAD)に座っている場合、作業ディレクトリはすべてのファイルとフォルダーの「傘」の用語であることを意味します。

ただしは特定のディレクトリ/フォルダではありません。作業ディレクトリは、すべてのディレクトリ、ファイル...すべてをカバーします。
いくつかのファイルをコミットしたい場合、それらのファイルは作業ディレクトリにあり、前にstagegit addを使用)する必要があるため、これについて言及します。それらをコミットします(git commitを使用)。

2
Harmelodic

現地のレポジトリで直接働いていますか?

Microsoftの指示に従う場合[参照。 https://docs.Microsoft.com/en-us/Azure/devops/repos/git/clone?view=Azure-devops&tabs=visual-studio ]、ここで最終的に開きます。 slnソリューションファイル。リポジトリがデフォルトで保持されているC:\ Users \\ source\reposではなく、大規模なD:ドライブ(D:\ dev)のコードで作業することを好むため、それは私にとって間違っているようですD:\ devエリアで作業できる限り、ローカルリポジトリがそこに保持されていることを気にしないでください-それは理想的ではありません)。

0
Zeek2