理解git:克隆和签出的区别
我对理解git:克隆和签出的区别,git,github,version-control,Git,Github,Version Control,我对git clone和git checkout之间的区别感到有点困惑。例如,我试图下载、编译和安装一个C++代码库,名为 DART。说明中说要运行以下操作: 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 t
git clone
和git checkout
之间的区别感到有点困惑。例如,我试图下载、编译和安装一个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
实际下载源文件对吗?而签出
只是选择我想要实际使用和安装的代码版本
但如果我还想安装版本release-5.0
?build
目录中的编译库不包含版本5.0和6.0的混合版本吗
当我运行clone
时,它是否下载了5.0版的所有文件,以及6.0版的所有文件?如果我只想安装6.0,这不是很低效吗
谢谢
那么我认为clone实际上下载源文件是对的吗
对
签出只是选择我想要实际使用和安装的代码版本
和你一起工作,是的。它会更新文件系统,以反映在您签出提交/分支时存储库所处的状态
但如果我也想安装5.0版呢?构建目录中的编译库不包含5.0版和6.0版的混合版本吗
否,如果签出5.0,您的文件系统将更新以反映5.0分支的状态。同样适用于6.0和任何其他版本
如果git忽略了构建/文件夹(很可能是),那么是的
当我运行clone时,它是否下载了5.0版的所有文件,以及6.0版的所有文件
基本上,它所做的是下载当前的文件,以及它们的历史记录。因此,每个文件都有一个,git知道存储库历史中每个文件都发生了什么。当您签出不同的提交/分支时,git会将文件更新为提交时的状态,并使用历史记录来完成此操作
如果您是这样要求的,那么您没有同一文件的多个副本
如果我只想安装6.0,这不是很低效吗
可能是。很可能6.0分支是从5.0分支分支出来的,取决于它的提交
那么我认为clone实际上下载源文件是对的吗
对
签出只是选择我想要实际使用和安装的代码版本
和你一起工作,是的。它会更新文件系统,以反映在您签出提交/分支时存储库所处的状态
但如果我也想安装5.0版呢?构建目录中的编译库不包含5.0版和6.0版的混合版本吗
否,如果签出5.0,您的文件系统将更新以反映5.0分支的状态。同样适用于6.0和任何其他版本
如果git忽略了构建/文件夹(很可能是),那么是的
当我运行clone时,它是否下载了5.0版的所有文件,以及6.0版的所有文件
基本上,它所做的是下载当前的文件,以及它们的历史记录。因此,每个文件都有一个,git知道存储库历史中每个文件都发生了什么。当您签出不同的提交/分支时,git会将文件更新为提交时的状态,并使用历史记录来完成此操作
如果您是这样要求的,那么您没有同一文件的多个副本
如果我只想安装6.0,这不是很低效吗
可能是。很可能6.0分支是5.0分支的分支,取决于它的提交。在github上,您也可以选择一个特定分支,直接从repo页面下载这些文件。在github上,您也可以选择一个特定的分支,直接从repo页面下载这些文件。和