当 git clone --depth 1 不起作用时签出分支

Checkout to branch when git clone --depth 1 doesn't work

set -e
cd /source

git clone --depth 1 https://github.com/named-data/ndn-cxx.git

pushd ./ndn-cxx

git checkout -b release-build ndn-cxx-0.3.3

./waf configure

./waf

./waf install

popd

rm -rf ./ndn-cxx

我是 运行 上面提到的脚本,但是收到错误:“克隆 进入 'ndn-cxx'... /source/ndn-cxx /来源 致命:无法同时更新路径和切换到分支 'release-build'。 您是否打算签出无法作为提交解析的 'ndn-cxx'?

默认情况下,如果您指定 --depth 选项,git 将只获取 master 分支,因此您将无法检出到任何其他分支。

你可以这样写:

git clone --depth 1 <url> --single-branch --branch <branch>

检索最新版本的 <branch>,像这样:

git clone --depth 1 https://github.com/named-data/ndn-cxx.git --single-branch --branch ndn-cxx-0.3.3

您无需在克隆

之后执行 git checkout

正如@edi9999 所说,--depth 选项默认获取单个分支。如果要获取指定深度尖端附近的所有其他分支,则必须指定 --no-single-branch 选项。

例如

git clone https://github.com/named-data/ndn-cxx.git --depth 1 --no-single-branch