Git:"工作目录究竟在哪里"?

时间:2016-03-24 13:27:22

标签: git github working-directory

我正在阅读一些Git教程。 " 工作目录的概念"不断提及,但是,我读过的教程或文档都没有指出这个" 工作目录"是

我原以为它实际上是.git的父目录,也就是我运行git init的目录。但我正在观看的视频教程谈到了无需提交和" 工作目录清理":

  

实际上,您实际上可以制作存储库的副本,然后进行制作   复制,以便它没有工作目录,这实际上是   叫做裸克隆。这实际上是GitHub使用的。

如果我理解" 工作目录"是的,存储库怎么没有" 工作目录"?它是什么意思,当它说GitHub使用" 裸克隆"?

7 个答案:

答案 0 :(得分:11)

这应该有希望为我们解决问题:

  

使用git init创建的存储库之间有什么区别   命令和git init --bare命令?

     

使用git init命令创建的存储库称为工作   目录。在存储库的顶级文件夹中,您将找到   两件事:

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创建的存储库称为裸存储库。他们   结构与工作目录略有不同。首先,   它们不包含源文件的工作或签出副本。和   第二,裸repos存储git修订根目录中的repo历史   存储库的文件夹而不是.git子文件夹。注意......裸露   存储库通常被赋予.git扩展名。

取自John Saints - What is a bare git repository?

一个裸git克隆不包含已检出代码的工作目录,换句话说 将其视为.git目录(Git数据库)而不是其他任何东西。

答案 1 :(得分:6)

它是您结帐项目的地方。例如,您已在其中签出项目分支的目录。它通常是包含.git文件夹的文件夹。那是工作目录。当您对签出分支中的文件进行更改时,您将对工作目录进行更改。此时,工作目录具有未提交的更改。所以,最初当你没有进行任何提交时,工作目录将是干净的,因为没有变化。

答案 2 :(得分:3)

工作目录就是您正在使用的当前本地目录。 例如,如果您结帐 结帐 结束 结束 您的名称 - dev < / strong>, yourname-dev 现在是您的工作目录,如果您从此( yourname-dev )工作目录结帐到另一个说 dev dev 现在是您的新工作目录

答案 3 :(得分:2)

将两个其他答案结合起来:

Git Documentation:

中所述
  

工作目录是项目的一个版本的单个结帐。

这实际上意味着如果您签出一个分支(例如主人)并且坐在特定的提交(例如HEAD)上,您的工作目录就是所有文件和文件夹的“保护”术语。

不是特定的目录/文件夹。工作目录涵盖了所有目录,文件......一切 我之所以提到这一点,是因为当你想提交一些文件时,这些文件将在工作目录中,你需要在提交它们之前阶段它们(使用git add)(使用{{ 1}})。

答案 4 :(得分:2)

根据documentation

  

最后,您有了工作目录。另外两棵树以高效但不方便的方式存储在.git文件夹中。工作目录将它们解压缩到实际文件中,这使您可以更轻松地编辑它们。将工作目录视为沙箱,您可以在将它们提交到临时区域(索引)然后再提交到历史记录之前尝试更改。

答案 5 :(得分:0)

您直接在本地存储库中工作吗?

当我按照Microsoft的说明进行操作时[ref。 https://docs.microsoft.com/en-us/azure/devops/repos/git/clone?view=azure-devops&tabs=visual-studio],那是我最终打开.sln解决方案文件的地方。这对我来说似乎是错误的,但是不幸的是,因为我更喜欢在庞大的D:驱动器(D:\ dev)上处理代码,而不是在C:\ Users \\ source \ repos中使用该代码,因为默认情况下该库是保存的(只要我可以在我的D:\ dev区域工作,就不要介意将本地存储库保存在该位置。

答案 6 :(得分:0)

回答 OP 的 3 个问题:

Q1:“工作目录”到底在哪里?
A1:“一个 Git 项目通常由一个工作目录组成,顶层有一个 '.git' 子目录。” (来源:https://git-scm.com/docs/git#_discussion

Q2:仓库怎么可能没有“工作目录”?
A2:Git“裸仓库”就是一个例子(来源:https://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server#_getting_git_on_a_server

Q3:GitHub 使用“裸克隆”是什么意思?
A3:阅读 --bare 上的 git clone 选项的文档,这里:https://www.git-scm.com/docs/git-clone