根据我迄今为止阅读GIT的经验,我发现工作目录似乎是一个过载的术语。有时候人们指的是签出分支的硬盘上的目录,例如克隆repo时,分支被检出到repo的新克隆的目录中。
但有时人们只是指一个抽象的位置,其中包含未跟踪文件和已修改文件,即输入git status
时的红色文字
我希望有人可以让我知道工作目录的官方定义。即使是在线的Pro Git书也确实有点含糊不清。
注意:我每天都在使用它,我只是想知道它是什么。
干杯
答案 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 status
或git diff
之类的工具时,工具会查看工作副本中文件的内容,并将它们与存储库(和索引)进行比较。文件状态不是&#34;存储&#34;它可以随时随地计算。
答案 2 :(得分:1)
放置.git
目录的目录以及该目录下的所有(未排除)目录。