GIT存储库的工作目录是什么?

时间:2015-05-13 03:47:49

标签: git

根据我迄今为止阅读GIT的经验,我发现工作目录似乎是一个过载的术语。有时候人们指的是签出分支的硬盘上的目录,例如克隆repo时,分支被检出到repo的新克隆的目录中。

但有时人们只是指一个抽象的位置,其中包含未跟踪文件已修改文件,即输入git status时的红色文字

我希望有人可以让我知道工作目录的官方定义。即使是在线的Pro Git书也确实有点含糊不清。

注意:我每天都在使用它,我只是想知道它是什么。

干杯

3 个答案:

答案 0 :(得分:6)

git commit-tree树表示工作目录的特定目录状态

因此,当工作目录代表其中已签出回购时,工作树代表其状态
InitialSessionState initial = InitialSessionState.CreateDefault(); initial.ImportPSModule(new string[] { "C:\\Program Files\\Microsoft Dynamics NAV\\80\\Service\\NavAdminTool.ps1" }); Runspace runspace = RunspaceFactory.CreateRunspace(initial); runspace.Open(); PowerShell ps = PowerShell.Create(); ps.Runspace = runspace; ps.Commands.AddCommand("Get-NAVTenant -ServerInstance DynamicsHost"); foreach (PSObject result in ps.Invoke()) { Console.WriteLine(result.ToString()); } 显示" 工作树",表示工作目录的状态

工作目录引用&#34;其中&#34;,工作树引用&#34;什么&#34; (它包含的内容,跟踪或未跟踪的文件)< / p>

请注意,git 2.5(2015年第2季度)将允许multiple working trees用于给定的本地回购 这意味着您将使用多个工作目录(使用git status),并且每个工作目录可以包含不同的工作树:例如,您可以检查每个路径的不同分支,这意味着每个目录包含不同的状态同一个回购:多个工作树。

答案 1 :(得分:4)

也许这有帮助。

使用git存储库时,本地计算机上基本上有三件事情:

1)存储库本身。包含项目的整个更改历史记录。提交,树木,斑点。它存储在.git目录中。

2)你的工作副本。它是在你&#34; checkout&#34;来自存储库的代码(通常是一个分支)。它开始包含您从存储库中检出的所有文件,但您可以使用它们。它们存储在.git目录之外的常规文件中。

3)一个名为&#34; index&#34;的临时区域。当您提交存储库时,首先要添加&#34;您对索引的更改。这基本上会拍摄您要提交的文件的快照。然后,您可以自动提交所有这些更改。或者回顾一下。或者添加更多。索引也存储在.git目录中。

未经跟踪的文件:这些文件只是工作副本中不属于存储库的文件。

已修改的文件:这些文件在工作副本中具有与存储库中的内容不同的文件。他们已经可以上演&#34; (即加入指数)或不。

运行git statusgit diff之类的工具时,工具会查看工作副本中文件的内容,并将它们与存储库(和索引)进行比较。文件状态不是&#34;存储&#34;它可以随时随地计算。

答案 2 :(得分:1)

放置.git目录的目录以及该目录下的所有(未排除)目录。