【发布时间】:2016-08-09 19:20:44
【问题描述】:
我有 4 个远程分支:A、B、C、D。A 和 B 与我不再相关,但我想远程保留它们。因此,当我执行 git fetch 时,我只想获取 C 和 D 。
【问题讨论】:
我有 4 个远程分支:A、B、C、D。A 和 B 与我不再相关,但我想远程保留它们。因此,当我执行 git fetch 时,我只想获取 C 和 D 。
【问题讨论】:
# fetch a remote branch from remote but the catch here is that the branch
# will not have a tracking branch. It will be checked out locally.
git fetch <remote> <remote branch>:refs/remotes/<remotename>/<local branch>
还有几点说明:Git 不在乎你的提交在哪里。
Git 有一个大的内容文件 (.pack),它存储了存储库的所有内容。当您执行 fetch 时,它只是从远程执行所有内容。 Git 不会“看到”该文件中的任何分支。
当你 checkout 分支时 git checkout 这个分支的最新提交。您当然可以移动和更改 HEAD 并将其设置为任何其他提交。
关键是 git 不关心标签、分支等。它只是跟踪内容,并且由于 sommit 存储它的父 git 知道如何从该文件中提取“先前”提交。
SummaryGit 不跟踪分支或标签。它只是在内部存储它们的 SHA-1,并知道如何在需要时提取它们。
【讨论】:
git fetch 我收到了一堆,即使是那些超级旧的。使用git fetch --depth=<depth>我可以限制分支,但还有其他方法吗?
git fetch --all --prune
git clone --depth 相同,但与不获取其他分支无关。
fetch 下载它们?
git checkout origin/A 现在您处于分离状态(因为您没有签出本地分支)并且您必须创建分支才能更新它