git 浅克隆无法获取新的提交/分支?

wljmcqd8  于 2023-02-02  发布在  Git
关注(0)|答案(5)|浏览(276)

我有这个:

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

所以这个分支不在那个列表中,如果有人能帮我的话。

oaxa6hgo

oaxa6hgo1#

正如--depth的文档所述,
除非给出--no-single-branch,否则隐含--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

jvlzgdj9

jvlzgdj92#

浅克隆默认情况下也是 * 单分支 * 克隆:

--深度

创建历史记录被截断为指定提交次数的浅克隆。除非...否则隐含--single-branch
一个 * 单分支 * 克隆就是它所说的:一个只从上游复制一个分支的克隆(底层机制是通过默认的fetch refspecs实现的,因此您可以通过提供refspecs临时覆盖此机制以获取一个分支)。
如果希望浅克隆复制多个分支,则必须将其转换为非单分支克隆,或将其作为非单分支克隆启动。要将其作为非单分支克隆启动,请继续阅读引用句子的其余部分。要将现有的单分支克隆更改为两个、三个或所有分支克隆,请参见How do I "undo" a --single-branch clone?

vlf7wbxs

vlf7wbxs3#

当你做一个浅克隆时,你可能需要指定一个你将要获取的分支:

git clone --depth=1 --branch=me/work <repo> app
esyap4oy

esyap4oy4#

另一种方法是显式地获取和创建远程跟踪分支(而不是依赖于FETCH_HEAD
并使用git switch猜测模式创建本地分支。

git fetch me/work:me/work
git switch me/work
pcww981p

pcww981p5#

我认为这种方法在进行浅克隆时有效

git fetch origin me/work
git checkout -b temp FETCH_HEAD

相关问题