我想跟踪一个使用git的项目.我不想克隆完整的存储库和完整的历史记录,我只想要最新版本,我希望能够从远程项目更新到新版本.
我尝试过使用git clone,但这会创建整个存储库的副本(文件大小很大),并且跟踪更改会使磁盘空间更大(100mb的文件现在占用超过2gb).
我不打算提交补丁,我不需要历史记录.我只想要像颠覆这样的最新版本.
这可能在git中吗?
有没有办法只从远程Git仓库检索一个特定的提交而不在我的PC上克隆它?远程仓库的结构与我的结构完全相同,因此不会有任何冲突,但我不知道如何做到这一点,我不想克隆那个庞大的存储库.
我是git的新手,有什么办法吗?
我通常使用下面的命令project.git来获取指定目标中的存档:
git archive master | tar -x -C /home/kave/site/
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以直接从远程存储库归档到目标目录?
我尝试过这样的事情,没有任何乐趣:
git archive master https://kave@dndigital.git.cloudforge.com/myoproject.git | tar -x -C /home/kave/site/
Run Code Online (Sandbox Code Playgroud)
有什么建议?谢谢
我知道我可以通过指定--depth标志来做一个浅层克隆.但是,这会以整数作为其值.有没有办法让一个相同的行为datetime?我不希望克隆整个存储库并检查以前的状态.
我的目标是能够构建一个具有悠久历史的项目的最新版本并为之做出贡献 - 并且不使用本地存储来复制许多历史分支和历史可以追溯到十年甚至更长时间(无论如何,我总是可以在项目的中央存储库的Web UI中查找,如果我需要的话,我可能不会这样做.
我第一次尝试时似乎很幸运:
git clone --depth 40 -b master http://github.com/who/what.git/ what
Run Code Online (Sandbox Code Playgroud)
这给了我一个整洁的本地克隆'什么'只有' master'分支,并有足够的承诺来涵盖最近的两个标记版本.
然后我可以做' git checkout latest-release-tag并构建最新版本.yippee的!
正如我想象的那样,我需要做一个补丁.一切顺利进行:' git checkout -b my-patch-branch',进行我的更改,提交,我能够将我的补丁分支推回到github上的克隆,以便项目可以拉动它.简单!
我觉得我很幸运,因为根据我的阅读,例如,在这里,我不能在git 1.9之前做到这一点.
但安装的版本竟然是1.9,所以我侥幸成功.
现在我要做的下一个显而易见的事情是从远程获取并获取master上的最新活动(包括我的补丁的上游合并,所以我不再需要该分支).我尝试了'git fetch --dry-run upstream'并惊恐地看着它无数兆字节的下载,然后给了我一个新的标签列表,可以追溯到乳齿象时代.我很高兴我说--dry-run!
我真的希望它能master从我的克隆的HEAD中获得十几个新的提交,然后我可能会有一个深度52克隆而不是40,但这就是我想要的......在我介入之前,先从有用的近期历史开始,然后从这一点开始跟踪和增长,并能够构建,分支和推送补丁.它似乎非常接近.
有没有简单的方法让git做我想做的事情?我想做的不合理吗?
编辑:更多信息.
(1)上流实际上是靠近我提前一百次,我估计十几次被拉出空中.
(2)事实证明,我在克隆中获得的原始40次提交都是单父提交.我正在尝试获取的一堆后者是在我的克隆不包含的某个分支中与第二个父进行合并提交.因为我克隆中最早的提交不是一个共同的祖先,那些是否会导致git引入他们所有的古代历史?
有没有办法告诉它我不想要那个?
更多新信息:
(1)我之前发现我之前使用的是http协议,它实际上并没有与服务器上的git进程交互,所以它没有机会定制下载大小.
但是,当我使用git-over-ssh重试时,我仍然有一个巨大的提取.
然后
(2)手动,就像动物一样,我点击了github的'newtork'显示中显示的合并提交,找到涉及在我的浅切之前开始的分支的那些,并将他们的父-2 SHA添加到我的.git/shallow文件中,然后尝试再次在ssh上'git fetch'.这很好用,并下载了一个小包文件,可以快速转发我当地的master分支机构.我认为这正是我想要git能够自动完成的操作,但我还没有找到办法.手动,这很乏味.:)
我在 CI 盒子上运行测试。为了加快速度,我只是做了一个浅克隆:
git clone --depth 1 git@github.com:JoshCheek/some_repo.git
Run Code Online (Sandbox Code Playgroud)
假设所有测试都通过,我想触发管道中的下一步。触发的内容取决于上次部署(参考d123456)和我刚刚测试的当前参考(参考c123456)之间更改的文件。如果我做了一个普通的克隆,我可以发现这样的结果:
git diff --name-only d123456 c123456
Run Code Online (Sandbox Code Playgroud)
但我的克隆很浅,所以它不知道这些提交。我发现我可以用来git fetch --depth=n获取更多历史记录,但我只知道 SHA,而不知道 SHA 的深度。以下是可能可以回答这个问题的一组方法:
# hypothetical remote diff
git diff --name-only origin/d123456 origin/c123456
# hypothetical ref based fetch
git fetch --shallow-through d123456
git diff --name-only d123456 c123456
# hypothetical way to find the depth I need
depth=`git remote depth-to d123456`
git fetch --depth "$depth"
git diff --name-only d123456 c123456
Run Code Online (Sandbox Code Playgroud)
否则,我似乎可能必须编写一个循环并继续调用,--deepen直到我的历史记录包含提交。这看起来很痛苦(意味着编写/维护很烦人)并且昂贵(意味着缓慢,请记住浅层克隆的目的是减少这种成本)。
我正在尝试克隆存储库并开始使用它,所以我给你录音
$ git clone https://github.com/VirtuOR/OpenTRILL
Run Code Online (Sandbox Code Playgroud)
克隆开始了
Cloning into 'OpenTRILL'...
remote: Counting objects: 46419, done.
remote: Compressing objects: 100% (42140/42140), done.
Run Code Online (Sandbox Code Playgroud)
但它以下列错误结束
error: RPC failed; result=18, HTTP code = 200MiB | 55 KiB/s
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
Run Code Online (Sandbox Code Playgroud)
请帮忙
我使用“下载 ZIP”链接下载了一些大型 GitHub 存储库的存档。它只包含源代码,因此它不再是克隆或 git 存储库。然后我在磁盘上对此代码进行了一些更改,现在我想使用原始 GitHub 存储库中的 HEAD 修订版代码(自从我下载 ZIP 文件后已更改)来更新它。但它是一个很大的存储库,所以我不想下载所有文件,而只想下载修改后的文件。
我是否应该git init在现有源代码文件夹中创建一个新的存储库,然后git add .然后git commit然后?这只会下载修改过的文件吗?git remote add origin https://github.com/someuser/someproject.gitgit pull origin master
我最近遇到了管理项目及其可交付成果的方法.项目团队正在使用git存储库进行开发.还有另一个存储库用于部署工件.我可以通过这种方法看到几个好处.
您认为这种方法的好处和缺点是什么?
我通过两种不同的方式将 HTML 文件上传到 GitHub 存储库:拖放以及使用终端上的 Git 添加/提交/推送。在这两种情况下,我都收到了文件太大而无法显示的错误,但它只有 1.06 MB。我已经在 GitHub 和 SO 上搜索了文档。有什么想法吗?
当我跑步git pull或者git fetch,我显然检索历史和文件.对于大型项目,这需要很长时间.我想知道如何加快这个过程,对于一些项目我只对源代码而不是历史感兴趣.有没有办法告诉git我只想获取文件的当前快照而不是整个历史记录?
git ×11
github ×3
git-fetch ×2
repository ×2
date ×1
deployment ×1
git-clone ×1
git-diff ×1
git-remote ×1
performance ×1
terminal ×1
unix ×1