从这里开始

克隆

新建仓库 → 克隆,或者 ⌘K → 克隆。粘贴一个 URL,或者登录 GitHub、GitLab、 Bitbucket 或 Azure DevOps,从你自己的仓库列表里挑一个——所选配置档 的令牌只用于这次克隆,用完即弃,绝不会写进 .git/config。

选一个父文件夹和一个名字;字段下方那行会明明白白地告诉你仓库最终会落在哪里。 已经存在的文件夹会被拒绝,而不是往里面混着放。

高级——把克隆收窄

高级 下面的东西默认全是关的:不去动它,你得到的就是一次普通的、完整的克隆。 它真正派上用场的地方,是那些「完整」意味着二十分钟外加好几个 GB 的仓库。

展开「高级」的克隆对话框:部分克隆、浅克隆、单分支、子模块和分支选择器

选项 git 做了什么 代价是什么
部分克隆 --filter=blob:none 完整历史,但不含文件内容。数据块按需到达,所以打开一个旧文件需要联网。
浅克隆 --depth=N 只存在最新的 N 个提交。追溯(blame)、日志、二分查找和范围差异都会在切口处戛然而止。
只要一个分支 --single-branch 其他分支留在远程,直到你去获取它们。
克隆子模块 --recurse-submodules 每个子模块也一并检出——现在多花点时间,以后少一堆空目录。
要检出的分支 --branch <name> 从该分支开始,而不是远程的默认分支。

先考虑部分克隆,再考虑浅克隆。 部分克隆保留每一个提交——历史仍然可以搜索, 只有文件内容是惰性获取的。浅克隆是真的把历史丢掉了:git log 到切口就结束, 追溯也看不到切口之前的东西。如果你克隆一个大仓库是为了在里面干活,通常你想要 的是部分克隆。

浅克隆是可以撤销的:在终端里执行 git fetch --unshallow,历史 就补回来了。

挑选分支

直接键入分支名,或者按 列出分支 去问远程都有些什么(git ls-remote --heads), 然后从下拉列表里选。那是一次网络往返,而且只在你按下按钮时才发生——你打字的 过程中什么都不会查询。

如果列举失败了——私有 URL 还没有令牌、拼错了、没网络——该字段就退回成一个普通 的文本框,而克隆本身会把真正的错误报给你。

关于这两个标志的两点说明

  • --depth 隐含了 --single-branch。 在浅克隆里,不勾选 只要一个分支 才是在要求把其他分支也拿回来(--no-single-branch),这也是它下面的提示文字 会跟着变的原因。
  • 克隆本地文件夹通常会完全忽略 --depth,因为 git 会给对象库做硬链接,而 不是去获取。所以当你要求对一个本地仓库做浅拷贝时,Gitcito 会改用 file:// URL 来克隆,你要的深度就是你拿到的深度。

进度

进度条如实转述 git 报告的内容:统计、压缩、接收、解析、检出。某个阶段如果报不 出总量,显示的会是一条不确定进度的条,而不是一个编出来的百分比。

新仓库会在一个标签页里打开,并固定到你克隆时所用的那个配置档上。

在 GitHub 上改进这份翻译