我有这个:
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
所以这个分支不在那个列表中,如果有人能帮我的话。
5条答案
按热度按时间oaxa6hgo1#
正如
--depth
的文档所述,除非给出
--no-single-branch
,否则隐含--single-branch
所以如果你想
获取所有分支尖端附近的历史
在你的克隆上给予
--no-single-branch
,或者为了一次性的修正,你自己去获取,或者追溯性地关闭单分支设置
然后是
git fetch
。jvlzgdj92#
浅克隆默认情况下也是 * 单分支 * 克隆:
--深度
创建历史记录被截断为指定提交次数的浅克隆。除非...否则隐含
--single-branch
一个 * 单分支 * 克隆就是它所说的:一个只从上游复制一个分支的克隆(底层机制是通过默认的
fetch
refspecs实现的,因此您可以通过提供refspecs临时覆盖此机制以获取一个分支)。如果希望浅克隆复制多个分支,则必须将其转换为非单分支克隆,或将其作为非单分支克隆启动。要将其作为非单分支克隆启动,请继续阅读引用句子的其余部分。要将现有的单分支克隆更改为两个、三个或所有分支克隆,请参见How do I "undo" a --single-branch clone?
vlf7wbxs3#
当你做一个浅克隆时,你可能需要指定一个你将要获取的分支:
esyap4oy4#
另一种方法是显式地获取和创建远程跟踪分支(而不是依赖于
FETCH_HEAD
)并使用
git switch
猜测模式创建本地分支。pcww981p5#
我认为这种方法在进行浅克隆时有效