我想在github上克隆一个远程仓库,但它很大且我的连接似乎不够稳定,因此无法成功克隆。
但我已成功下载了该仓库的.zip文件。
有没有办法使用这个zip文件作为通过git clone创建的文件,以便我可以进行推送、拉取等操作呢?
我想在github上克隆一个远程仓库,但它很大且我的连接似乎不够稳定,因此无法成功克隆。
但我已成功下载了该仓库的.zip文件。
有没有办法使用这个zip文件作为通过git clone创建的文件,以便我可以进行推送、拉取等操作呢?
这里的相关帖子(链接)提供了获取.git
目录所需的信息,并简化了 umläute 给出的答案:
通过克隆一个裸仓库来获取.git
目录
$ mkdir repo
$ git clone --bare http://github/user/repo repo
创建 .git
目录并移动克隆的文件
$ mkdir repo/.git
$ mv repo/* repo/.git
解压存储库
$ unzip repo.zip
重新初始化存储库
$ cd repo
$ git init
验证您已同步
$ git pull
重置 HEAD 来清理状态
$ git reset HEAD
这里是存储库的日志... 存储库位置 - http://github.com/udacity/fullstack-nanodegree-vm
$ git log
commit ebcbda650bc81d7f4856f5314a0689cea5b43086
Merge: 574774b b5b787e
Author: Karl Krueger <karl@udacity.com>
Date: Tue Apr 7 11:39:54 2015 -0700`
Merge pull request #3 from pmallory/sharedDirAlert
Add a login alert to explain how to access Vagrant's shared directory
commit b5b787efdb1ecec0c3c9c7f9c0fd4732f984fcb3
Author: Philip Mallory <philip@udacity.com>
Date: Mon Apr 6 15:40:32 2015 -0700`
move the alert into the motd
commit b8012f33c86b0d19fc4c2b972af092e88d00978f
Author: Philip Mallory <philip@udacity.com>
Date: Mon Apr 6 14:32:01 2015 -0700`
Add a login alert to explain how to access Vagrant's shared directory
commit 574774ba29ccd661154431d5600240f090440c37
Author: Lorenzo Brown <lorenzo@udacity.com>
Date: Wed Mar 11 14:08:02 2015 -0700`
Update pg_config.sh
Added installs for Auth&Auth
commit 88fc5537b1a0017a1d76af4587a22412473809a4
Author: Lorenzo Brown <lorenzo@udacity.com>
Date: Wed Mar 4 13:00:25 2015 -0800`
Update and rename vagrant to vagrant/catalog/README.txt
commit f978cdc14c62b7295d8da1a95452faaa1bd108b8
Author: Lorenzo Brown <lorenzo@udacity.com>
Date: Wed Feb 4 11:06:03 2015 -0800`
Update Vagrantfile
switched to port forwarding on 8080
commit d6a3a26578ef3c6d01d28abca76d817938892c7f
Author: Lorenzo Brown <lorenzo@udacity.com>
Date: Tue Feb 3 14:52:34 2015 -0800`
Update Vagrantfile
Added:
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 5000, host: 5000
FSF uses these two ports for lessons 2 & 3 respectively.
commit 752a79e408c7328ef7f1766d1b97bb468ffed90a
Author: Mike Wales <michael.wales@udacity.com>
Date: Mon Feb 2 11:21:29 2015 -0800`
Removed .vagrant directory
commit 5af9d19adf9ab19b1d886f6cc78e556f864b42dd
Author: Mike Wales <michael.wales@udacity.com>
Date: Mon Feb 2 11:16:45 2015 -0800`
Initial commit.
init
**看到了关于repo的现有数据,但据我所知,历史记录仍然包括在内(不像简单的克隆)。请参见我上面的示例,我获取了[udacity/fullstack-nanodegree-vm][1]的zip文件,按照过程操作,然后显示日志,其中反映了此分支的所有更改。[1]:http://github.com/udacity/fullstack-nanodegree-vm - fracjackmac如果您已下载存储库(包括.git
目录),那么它非常简单。
解压缩存储库
$ unzip repo.zip
在你的代码仓库中配置一个指向克隆URI的远程
$ cd repo
$ git init
$ git remote add origin https://github.com/user/repo.git
重新同步存储库
$ git pull
实际上,从github下载的“zip”文件不会包含.git
目录,所以这并没有帮助:-(
可能最好的方法是在可以稳定访问的机器上克隆,然后将.git目录压缩并以某种方式获取它....
.git
目录是必需的? - Adam.git
目录包含实际的git存储库(与给定提交的文件不同)。 - umläute虽然被采纳的答案可行,但这种方法更为简单直接。
unzip <repo>.zip
cd <repo>
git init
git add .
git remote add origin https://github.com/<user>/<repo>.git
git remote update
git checkout master
请确保将 <user>
和 <repo>
替换为您的 Github 用户名和仓库名称 ;)
allow-unrelated-histories
选项进行git merge
以保持仓库更新。 - devsawumläute
相同的答案吗? - Adamerror: Your local changes to the following files would be overwritten by checkout:
,你可以先提交再进行checkout,这对我来说有效。 - Mohamed ElSawafgit archive
然后传递给您结果文件一样。git clone
传递“--depth”命令行参数来使用所谓的“浅克隆”。根据您的使用情况,初始化可能不是最好的选择。如果存储库非常大(我的存储库为16GB并且我需要这样做),这将特别繁琐,并且实际上会清除本地refs+objects
,如果您的归档表示一个远程不存在的归档,则不好。
您需要复制存储库分为两步:
目标是减少必须从远程克隆的对象数量或无法从不存在的远程重新创建的对象数量。此外,您希望您的配置不与最初创建存储库的人的本地配置文件冲突
您希望保留对象和引用的存储库布局,这些存储库不再存在于远程或者您不想复制它们(例如它们是大型图像资产)。因此,您不想初始化和拉取,特别是如果您没有远程了。
相反,存储库已处于可接受的状态,具有完整的引用和对象。唯一的问题可能是远程设置不正确,您的配置可能设置不当。
运行git config --local -l
以验证提交身份在存储库中未本地设置,并更改任何键,这些键会以您不想要的方式覆盖全局设置。
现在它已经配置好了,将存储库视为自己的(因为它就是),Git被设计为分布式工作,因此一旦您修改了任何本地配置,它实际上与克隆没有区别。唯一剩下的事情是确保您的远程设置正确。
如果您没有远程但希望创建一个,请使用git init --bare
在远程服务器上创建一个,然后像往常一样添加远程并推送所有引用git push --all
。使存储库变为裸存储库意味着它将接受第一个推送,而不会抱怨发散的历史记录。
如果您有现有的远程存储库,请将其添加为远程存储库并拉取。存档分支可能指向错误的URL,具体取决于存档制作的时间,如果是这种情况,请使用git remote
将它们分配给新位置或删除任何无效的URL。
一旦设置了远程,就可以使用fetch和pull来获取最新的更新。如果存在分离的HEAD,请检出所需的分支。如果存档库的历史记录与远程不同,git将产生合并冲突,请像平常一样解决,并在必要时隐藏更改。