git存储库应该在哪里创建?
git存储库可以在受版本控制的文件夹中创建,还是应该放在该文件夹之外?或者两者都有可能?存储库位置重要吗?git存储库应该在哪里创建?,git,version-control,filesystems,Git,Version Control,Filesystems,git存储库可以在受版本控制的文件夹中创建,还是应该放在该文件夹之外?或者两者都有可能?存储库位置重要吗?git init将在项目的根目录中创建一个git存储库。据我所知,git存储库总是在您正在处理的项目(或您想要进行版本控制的文件夹)的根目录中创建的 git在根目录中创建一个.git文件夹,其中包含所有版本/分支/提交等默认情况下,git存储库(.git文件夹位于文件夹根)是在要进行版本控制的文件夹中创建的。您可以在它之外创建它,但不需要它,这是一种非常特殊的情况。git存储库的位置并不重要
git init
将在项目的根目录中创建一个git存储库。据我所知,git存储库总是在您正在处理的项目(或您想要进行版本控制的文件夹)的根目录中创建的
git在根目录中创建一个.git文件夹,其中包含所有版本/分支/提交等默认情况下,git存储库(
.git
文件夹位于文件夹根)是在要进行版本控制的文件夹中创建的。您可以在它之外创建它,但不需要它,这是一种非常特殊的情况。git存储库的位置并不重要,您可以将它们放在任何地方
尽管如此,将存储库放在其他存储库中并不十分可取,因为外部git存储库也会跟踪内部存储库中的更改
你能做的就是使用。基本上,您可以将其他现有存储库导入到存储库中,并跟踪其中的某个提交 git repo是在与源代码相同的位置创建的。请记住,git不像Subversion那样在中心位置(例如在服务器上)有一个存储库。相反,您的源代码目录是您的git repo,如下所示:
$ cd mysources
$ git init .
$ git add ...
toaster-simulator.git/
HEAD
config
index
objects/
refs/
...
现在,
mysources/.git
将包含git对象数据库,您可以添加/commit/branch/等等。这两种方法都是可能的,但简而言之,是的,这很重要。在我的解释中,我们将调用您在超级存储库中推送和拉出的存储库。这只是为了让事情更清楚
以下是您的两个选择:
A
,则无法从远程位置推送到该分支A
。您必须先将您的工作分支更改为分支B
,然后其他人才能使用分支A
bare
超级存储库。bare
存储库没有任何签出分支
以下命令将创建一个新的裸git存储库,并将当前数据推送到其中。从那时起,您应该能够git push
,git pull
。。。如你所愿
cd
mkdir myproject.git
cd myproject.git
git init --bare
cd
cd project_folder
git init
git add *
git commit -m "Initial push"
git remote add origin ~/myproject.git
git push origin master
[编辑]使解释更加清晰。添加第六个答案在这一点上可能有点徒劳无益,但我为教程编写了类似的内容,我认为这个问题的答案清楚地解释了裸存储库和非裸存储库的标准布局是很重要的
通常使用git时,您将使用一个非裸存储库,或一个具有工作树的存储库。默认情况下,包含.git
目录的目录将位于该存储库的工作树的顶层。例如,如果您在名为toaster simulator
的目录中创建了这样一个存储库,则目录结构可能如下所示:
toaster-simulator/
.git/
HEAD
config
index
objects/
refs/
...
README
Makefile
src/
toaster.c
在存储库的顶层只有一个.git
目录。1此目录包含存储库的整个历史记录、所有分支、构成历史记录中每个提交的每个文件的对象等。(例如,.git/objects
目录包含将对象名称映射到文件、提交等的数据库;HEAD
指向当前分支;等等。)您不应手动删除或更改此目录中的文件,否则将有损坏存储库的风险。.git
目录之外的所有内容都是您的工作树。您只需在开发项目时按常规编辑这些文件即可
也许对于刚接触git的人来说,最令人惊讶的事情是,如果你从一个分支切换到另一个分支,工作树中的文件可能会完全改变。虽然这可能会让你第一次看到它时感到震惊,但这是一个很好的特性——你几乎不需要在你的计算机上有多个存储库副本,因为switchi从一个分支到另一个分支是如此快速和容易。(为了防止您丢失数据,如果您的工作树中有未记录在提交中的更改,并且这些更改位于可以通过切换分支以任何方式进行更改的文件中,git将阻止您像这样切换分支。一旦您使用处于特定状态的文件创建了提交,git将非常困难。)(你很可能会丢失这些文件。)
另一种类型的存储库是裸存储库,它本质上类似于.git
目录,但没有工作树。您通常将其用于许多人将要对其进行更改的存储库-您不会在此存储库上进行开发,因此工作树只会碍事。C