我正在阅读一些Git教程。 " 工作目录的概念"不断提及,但是,我读过的教程或文档都没有指出这个" 工作目录"是
我原以为它实际上是.git
的父目录,也就是我运行git init
的目录。但我正在观看的视频教程谈到了无需提交和" 工作目录清理":
实际上,您实际上可以制作存储库的副本,然后进行制作 复制,以便它没有工作目录,这实际上是 叫做裸克隆。这实际上是GitHub使用的。
如果我理解" 工作目录"是的,存储库怎么没有" 工作目录"?它是什么意思,当它说GitHub使用" 裸克隆"?
答案 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)
将两个其他答案结合起来:
中所述工作目录是项目的一个版本的单个结帐。
这实际上意味着如果您签出一个分支(例如主人)并且坐在特定的提交(例如HEAD)上,您的工作目录就是所有文件和文件夹的“保护”术语。
不是特定的目录/文件夹。工作目录涵盖了所有目录,文件......一切
我之所以提到这一点,是因为当你想提交一些文件时,这些文件将在工作目录中,你需要在提交它们之前阶段它们(使用git add
)(使用{{ 1}})。
答案 4 :(得分:2)
最后,您有了工作目录。另外两棵树以高效但不方便的方式存储在.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