该--depth 1选件git clone:
创建一个浅层克隆,其历史记录被截断为指定的修订数.浅存储库有许多限制(您不能克隆或获取它,也不能从中推送或插入它),但如果您只对历史悠久的大型项目的近期历史感兴趣并且希望将修补程序作为补丁发送.
但是我已经成功完成了一个浅层克隆,提交了一些更改并将这些更改推回到(裸克隆)源.
这对我有意义 - 我的意思是为什么不呢?当克隆的HEAD在原点可识别时,我的提交就在此之上,似乎没有理由.但手册说不然.
我喜欢浅层克隆的想法 - 例如drupal核心:当我从7开始时,我无法知道drupal 4中发生了什么 - 但我不想在脚下射击自己.
那么浅层克隆是否安全,在其中开发提交,再次拉动以跟上来自原点的更新?
比方说,我需要在修订/提交哈希 id 处获取https://github.com/mozilla/gecko-dev042b84a。现在,整个存储库是(在克隆之前查看 github 存储库的大小?):
wget -qO- https://api.github.com/repos/mozilla/gecko-dev | grep size
# "size": 3891062, # this in kB
Run Code Online (Sandbox Code Playgroud)
......这对我来说有点太多了。所以,我想,我会得到一个浅层克隆 - 仅此一项就可以获得近 400 MB:
git clone --depth 1 https://github.com/mozilla/gecko-dev
# remote: Counting objects: 231302, done.
# Receiving objects: 100% (231302/231302), 392.95 MiB
Run Code Online (Sandbox Code Playgroud)
现在,这克隆了 HEAD,我不能从这里直接到达 042b84a,尤其是我使用的 git 1.9.1 版客户端(如何浅克隆深度为 1 的特定提交?;我克隆 repo 后如何获取远程分支)使用 git clone --depth 1;Git:获取深度为 1 的 git 存储库的特定修订版)。显然,除了不浅化 repo(无论如何下载与完整克隆相同)之外,我能做的最好的事情就是慢慢增加深度。
我不确定“深度”是否仅对应于 HEAD 和给定修订版之间的提交次数 -在远程分支上获取 git sha depth注意到对于完整克隆,您可以执行以下操作: …
我想浅克隆存储库的一部分:只有 1 个功能分支(包括从 分支以来的所有提交)和之前的main一些提交。main
我已经尝试过git clone $repo --depth=N --branch=$feature正确检查 $feature 的浅克隆,并且假设我选择足够大的深度返回到分支点。
拉入 main 的咒语是什么?
本质上我希望能够做到:
git clone --branch=$feature
BASE=$(git merge-base $feature origin/main)
echo git rev-parse $BASE^
echo git rev-parse $BASE^^
echo git rev-parse $BASE^^^
Run Code Online (Sandbox Code Playgroud)
告诉我在分支之前发生的几次提交的 SHA1。
我遇到了一种情况,无法切换到仅在 中列出的分支git ls-remote,详细信息如下:
我分叉了一个 github repoA 作为 repoB,创建了自己的分支并将其推送到 ComputerA 中的 repoB,在 ComputerB 中,我将分叉的 repo 克隆到本地磁盘,添加了远程上游,并尝试切换到我创建的分支,但失败了,我不过可以成功切换到github网页中的同一个分支。
以下结果来自 ComputerB 中的 repoB。
ls-远程分支:
$ git ls-remote --heads
2da2080ea7201fc7928e947dc3214dd89d86c4ba refs/heads/enable-vim-better-whitespace
433cedd84bba8bcdf3584734906b2c0fd3b6dc3a refs/heads/fix-lsp-cache-dir
ff65e1cd687d0c144e98b09e4d7a164f8b6bfd3e refs/heads/gh-pages
17e53cf01badebc2abef7df375903da71bf884d8 refs/heads/master
7b8f8a2dccb0715ff1c1c411abf40b2ff6cec30b refs/heads/vim-plug
26b8a0ba594af1068997c70c4ef0f503571557b3 refs/heads/vundle
Run Code Online (Sandbox Code Playgroud)
列出分支:
$ git branch
abc
* master
$ git branch -r
origin/HEAD -> origin/master
origin/master
upstream/gh-pages
upstream/master
upstream/vim-plug
upstream/vundle
$ git branch -a
abc
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/upstream/gh-pages
remotes/upstream/master
remotes/upstream/vim-plug
remotes/upstream/vundle
Run Code Online (Sandbox Code Playgroud)
该分支abc是我还没有推送的本地分支。
我尝试了几种方法来切换到分支,fix-lsp-cache-dir例如
$ git …Run Code Online (Sandbox Code Playgroud)