为什么 git clone 有时会创建一个 .git 目录,有时却不会?
Why does git clone sometimes create a .git directory, and sometimes not?
前面至少有 3 个问题解释了如何在没有 .git 目录的情况下克隆存储库:
- Do a "git export" (like "svn export")?
- Git clone without .git directory
- What's the best practice to "git clone" into an existing folder?
从这些问题来看,您似乎不能只 运行 git clone
并在没有 .git
目录的情况下克隆存储库。
然而,在我克隆的大多数存储库中,例如下面命令中的存储库,没有创建 .git
目录。
git clone https://github.com/scotch-io/scotch-box.git
什么决定直接 git clone
命令是否创建 .git
目录?
您确定要在正确的位置寻找 .git
吗?当你像 git clone https://github.com/scotch-io/scotch-box.git
这样的克隆时,repo 实际上是在目录 scotch-box
中克隆的,因此 .git
将位于 scotch-box/.git
另一方面,做:
git 克隆 https://github.com/scotch-io/scotch-box.git .
注意末尾的 .
- 将克隆到当前文件夹(如果它还不是 git 存储库)
总是 .git
目录在 git clone
之后。没有例外。如果您看不到它,则它会被隐藏(如何发生取决于您的操作系统。linux 上的 ls
不会显示以点开头的 files/dirs。您必须使用 ls -a
.)
.git
目录是必不可少的,因为它包含 git 使用的所有文件和信息。
这是您提到的 git-clone
之后发生的事情:
/tmp % git clone https://github.com/scotch-io/scotch-box.git
Cloning into 'scotch-box'...
remote: Counting objects: 83, done.
remote: Total 83 (delta 0), reused 0 (delta 0), pack-reused 83
Unpacking objects: 100% (83/83), done.
Checking connectivity... done.
/tmp % cd scotch-box
/tmp/scotch-box (git)-[master] % la
total 40K
drwxr-xr-x 4 t t 4.0K 12. Aug 14:10 .
drwxrwxrwt 8 root root 12K 12. Aug 14:10 ..
drwxr-xr-x 7 t t 4.0K 12. Aug 14:10 .git
-rw-r--r-- 1 t t 18 12. Aug 14:10 .gitignore
-rw-r--r-- 1 t t 7.4K 12. Aug 14:10 README.md
-rw-r--r-- 1 t t 480 12. Aug 14:10 Vagrantfile
drwxr-xr-x 2 t t 4.0K 12. Aug 14:10 public
前面至少有 3 个问题解释了如何在没有 .git 目录的情况下克隆存储库:
- Do a "git export" (like "svn export")?
- Git clone without .git directory
- What's the best practice to "git clone" into an existing folder?
从这些问题来看,您似乎不能只 运行 git clone
并在没有 .git
目录的情况下克隆存储库。
然而,在我克隆的大多数存储库中,例如下面命令中的存储库,没有创建 .git
目录。
git clone https://github.com/scotch-io/scotch-box.git
什么决定直接 git clone
命令是否创建 .git
目录?
您确定要在正确的位置寻找 .git
吗?当你像 git clone https://github.com/scotch-io/scotch-box.git
这样的克隆时,repo 实际上是在目录 scotch-box
中克隆的,因此 .git
将位于 scotch-box/.git
另一方面,做:
git 克隆 https://github.com/scotch-io/scotch-box.git .
注意末尾的 .
- 将克隆到当前文件夹(如果它还不是 git 存储库)
总是 .git
目录在 git clone
之后。没有例外。如果您看不到它,则它会被隐藏(如何发生取决于您的操作系统。linux 上的 ls
不会显示以点开头的 files/dirs。您必须使用 ls -a
.)
.git
目录是必不可少的,因为它包含 git 使用的所有文件和信息。
这是您提到的 git-clone
之后发生的事情:
/tmp % git clone https://github.com/scotch-io/scotch-box.git
Cloning into 'scotch-box'...
remote: Counting objects: 83, done.
remote: Total 83 (delta 0), reused 0 (delta 0), pack-reused 83
Unpacking objects: 100% (83/83), done.
Checking connectivity... done.
/tmp % cd scotch-box
/tmp/scotch-box (git)-[master] % la
total 40K
drwxr-xr-x 4 t t 4.0K 12. Aug 14:10 .
drwxrwxrwt 8 root root 12K 12. Aug 14:10 ..
drwxr-xr-x 7 t t 4.0K 12. Aug 14:10 .git
-rw-r--r-- 1 t t 18 12. Aug 14:10 .gitignore
-rw-r--r-- 1 t t 7.4K 12. Aug 14:10 README.md
-rw-r--r-- 1 t t 480 12. Aug 14:10 Vagrantfile
drwxr-xr-x 2 t t 4.0K 12. Aug 14:10 public