我有这个:
git clone --depth=1 <repo> app
cd app
git fetch origin
git checkout a119b1076dd45a88a3609c4f7893ef3d82f9a4ee
但它说:
fatal: reference is not a tree: a119b1076dd45a88a3609c4f7893ef3d82f9a4ee
如果我使用分支的名称:
git checkout me/work
我得到:
error: pathspec 'me/work' did not match any file(s) known to git.
是因为我做了一个浅表克隆吗?对我来说没有多大意义。提交位于远程上,至少具有该名称的分支/提交位于远程上。
更新:
所以我在--all
上添加了git fetch --all
,然后运行git branch -vv --all
,我看到了:
* master 4761f83 [origin/master] timeline event update date should not be the review date. Every time it is inserted or updated the update date should be the current utc date
remotes/origin/HEAD -> origin/master
remotes/origin/master 4761f83 timeline event update date should not be the review date. Every time it is inserted or updated the update date should be the current utc date
因此该分支不在那个列表中,如果这可以帮助某人帮助我。
答案 0 :(得分:2)
在进行浅层克隆时,您可能需要指定要提取的分支:
git clone --depth=1 --branch=me/work <repo> app
答案 1 :(得分:2)
我认为,如果您进行浅层克隆,这种方法会起作用
git fetch origin me/work
git checkout -b temp FETCH_HEAD
答案 2 :(得分:2)
正如--depth
的文档所述,
除非给出
--single-branch
,否则--no-single-branch
就是
所以如果你想
获取所有分支机构提示附近的历史记录
为您的克隆提供--no-single-branch
,或者一次性校正以获取自身信息,
git fetch --depth=1 origin +refs/heads/*:refs/remotes/origin/*
或追溯关闭单分支设置
git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
然后是git fetch
。
答案 3 :(得分:2)
A shallow clone is also, by default, a single-branch clone:
-深度
创建一个浅表克隆,其历史记录被截断为指定的提交数。表示--single-branch
,除非...
单分支克隆就是它所说的:仅从上游复制一个分支的克隆。 (底层机制是通过默认的fetch
refspecs,因此,您可以通过提供refspecs临时为一次获取而覆盖它。)
如果要浅层克隆复制多个分支,则必须将其转换为非单分支克隆,或以非单分支克隆开始。首先,请继续阅读引用的句子的其余部分。要将现有的单分支克隆更改为两个,三个或全分支克隆,请参见How do I "undo" a --single-branch clone?