考虑到以下要求,在GitHub上创建git存储库的本地备份的最佳方法是什么?:
本地备份应该是一个简单的回购.
备份应包括所有分支.
应该很容易(逐步)更新备份.
基本上,我想要一个完美的镜子,可以轻松更新.就这样,命令
git clone --mirror git://github.com/...
Run Code Online (Sandbox Code Playgroud)
想到了,但据我所知,这不允许轻松更新(我必须删除并重新创建我的本地备份).另外,git clone的镜像选项似乎是最近的,我没有在我正在研究的一些系统上(它有稍微旧版本的git运行).
针对此类问题,您推荐的解决方案是什么?
Von*_*onC 46
我不确定它是否可以满足您的所有要求,但您可以查看git包
git bundle
Run Code Online (Sandbox Code Playgroud)
此命令通过在原始计算机的归档中打包对象和引用来提供支持
git fetch
和git pull
操作,然后使用git fetch
和git pull
通过某种方式移动归档后将它们导入另一个存储库
我喜欢这个解决方案的是生成的单个文件,正是我想要的
git bundle
将只打包由git-show-ref显示的引用:这包括头,标签和远程头.
machineA$ git bundle create file.bundle master
Run Code Online (Sandbox Code Playgroud)
注意:Kent Fredric在评论中提到了一个微妙之处git rev-list
:
--all
Run Code Online (Sandbox Code Playgroud)
假设所有引用
$GIT_DIR/refs/
都在命令行中列出为<commit>
.
他补充说:
您当前的捆绑包只会捆绑提交的父级,您可能需要指定
--all
获取所有内容的完整捆绑(分支是master的后代).
要看到差异:
$ git bundle create /tmp/foo master
$ git bundle create /tmp/foo-all --all
$ git bundle list-heads /tmp/foo
$ git bundle list-heads /tmp/foo-all
Run Code Online (Sandbox Code Playgroud)
Fer*_*eia 44
要创建镜像:
git clone --mirror git://github.com/user/project.git
Run Code Online (Sandbox Code Playgroud)
更新:
cd project.git
git remote update
Run Code Online (Sandbox Code Playgroud)
要更新而不更改当前目录:
git --git-dir project.git remote update
Run Code Online (Sandbox Code Playgroud)
但据我所知,这不允许轻松更新(我必须删除并重新创建我的本地备份).
不确定你是什么意思,更新它应该很简单
git fetch
Run Code Online (Sandbox Code Playgroud)
git clone
因为它应该获取远程分支上可见的所有引用/提交.
git clone --mirror
与[来源]也没有太大区别git clone --bare
唯一相关的区别是缺点 git remote add --mirror
(参见git help add
不同的行为)
如果你真的很担心,你可以这样做:
git clone --no-hardlinks --mirror $original $dest
Run Code Online (Sandbox Code Playgroud)
如果它们在同一个文件系统上,那么它们只会做任何不同的事情.
如果你是真的偏执,你可以焦油.(GZ | BZ2)整个目录和背部那了.
归档时间: |
|
查看次数: |
46450 次 |
最近记录: |