我对git clone
和git checkout
之间的差异感到有些困惑。例如,我正在尝试下载,编译和安装名为dart
的C ++库。说明说要运行以下内容:
1. Clone the repository into a directory in your home folder:
git clone git://github.com/dartsim/dart.git
2. Change directory to the DART repository and change branch to release-6.0:
cd dart
git checkout release-6.0
3. Create a build directory:
mkdir build
cd build
4. Configure and build dart:
cmake ..
make -j4
所以我认为clone
实际上实际下载源文件是对的吗?并且checkout
只选择我想要实际使用和安装的代码版本?
但是如果我还要安装版本release-5.0
怎么办?那么build
目录中的编译库是否包含5.0和6.0版本的混合?
当我运行clone
时,是否会下载5.0的所有文件,和 6.0的所有文件?如果我只想安装6.0,那么效率是否非常低效?
谢谢!
答案 0 :(得分:2)
所以我认为克隆实际上是在物理上下载源文件吗?
是
那个结帐只是选择我想要使用哪个版本的代码并安装?
使用,是的。它会更新您的文件系统,以反映您在签出时提交/分支时存储库所处的状态。
但是,如果我还要安装5.0版本,该怎么办?然后,构建目录中的已编译库是否包含版本5.0和6.0的混合?
不,如果您签出5.0,您的文件系统将更新以反映5.0分支的状态。同样适用于6.0和其他任何内容。
如果git忽略了构建/文件夹,那么很可能是,那就是。
当我运行clone时,是否会下载5.0的所有文件以及6.0的所有文件?
它的基本功能是下载目前的文件及其历史记录。因此,您将拥有每个文件中的一个,并且git知道存储库历史记录中每个文件发生了什么。当您签出不同的提交/分支时,git会将文件更新为它们在提交时所处的状态,并使用历史记录来执行此操作。
如果您要求的话,那么您没有相同文件的许多副本。
可能是。很可能6.0分支从5.0分支分支并依赖于其提交。如果我只想安装6.0,这不是非常低效吗?