我的回购历史悠久,所以我克隆了
git clone <url> --depth 1
现在我在主分公司。</ p>
如何获取名为&#39; feature / my-feature&#39;的远程分支。那是早先支持3次提交?
我试过了:
git checkout -b feature/my-feature origin/feature/my-feature
和
git fetch -all
但我仍然只看到主分支
答案 0 :(得分:2)
您可以通过指定获取深度来尝试强制它:
git fetch --depth=999999
深度是提交的数量。请注意,当您执行克隆时,clone实际上会进行提取,深度与提取中指定的深度相同。
如果需要,请将该数字设为更大!
修改强>
此外,您可以/可能应该使用加深 - 相同的语法,但它有效地从您最后指定的深度停止的位置获取..所以它更有效:
git fetch --deepen=999999
这可能取决于你的git版本,但最后一个....
编辑2
在我查看git docs时看到了这个......
git fetch --unshallow
这将是最好的方法(不确定它在哪个版本中实现,我没有尝试过......但看起来像是要使用的东西)。
答案 1 :(得分:2)
您需要:
git config --add remote.origin.fetch \
+refs/heads/feature/my-feature:refs/remotes/origin/feature/myfeature
或:
git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
其次是:
git fetch
git fetch --depth=<number>
git fetch --deepen=<number>
git fetch --unshallow
当你做一个浅层克隆时,Git会调整两个的东西:
(正在运行git clone
是一个简写,用于执行包含git init
,git remote add
,git fetch
和{{1}的一长串Git命令如有必要,可能会使用更多命令。)
特别是,git checkout
具有添加--depth 1
的副作用。如果您还没有使用明确的--single-branch
取消注销,Git会配置--no-single-branch
行,就好像您已经运行:
fetch
这告诉以后的git config remote.origin.fetch +refs/heads/<branch>:refs/remotes/origin/<branch>
命令只带来 给定的git fetch
,而不是其他人。
普通(非浅,非单支)<branch>
使用默认设置:
git clone
告诉每个以后的git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
带来每个分支。
然后,将所有未来的git fetch
操作配置为单分支,浅层克隆使用指定的fetch
进行提取,使用名为--depth
的文件插入特殊的“移植”条目。这些会影响克隆的整体有用性(但在任何现代Git中都要少得多);有关详情,请参阅Is it safe to shallow clone with --depth 1, create commits, and pull updates again?但是,请注意,此不保留.git/shallow
号码。它只是缩短了初始提取时间。未来提取的行为,特别是那些使用不同引用名称的行为,很难从中预测。
如果您运行--depth
,Git会找到所有浅层截止点,并在此之前重新获取所有历史记录。然后Git完全删除了特殊的git fetch --unshallow
文件,克隆的行为就像一个非浅的克隆。这与克隆是否表现得像.git/shallow
克隆无关。
如果您使用特定--single-branch
或git fetch
运行--depth
,Git会根据需要设置新的浅层截止值,以将深度设置为您指定的数字,或者增加任何现有数量由您指定的数字浅切断。如果有多个分支,它们的各种截止之间的关系是复杂的(它都是基于图形行走而没有代码检查或测试,很难说Git在一些棘手的情况下会如何表现)。