git clone帮助页面有这样的说法--mirror:
设置远程存储库的镜像.这意味着
--bare.
但是没有详细说明--mirror克隆与克隆的不同之处--bare.
在git中,是否可以创建存储,将存储推送到远程存储库,在另一台计算机上检索存储,并应用存储?
或者是我的选择:
我有一个相对较大的git存储库的情况,位于我的本地网络上的老人,慢主机上,这需要很长时间才能进行初始克隆.
ravn@bamboo:~/git$ git clone gitosis@gitbox:git00
Initialized empty Git repository in /home/ravn/git/git00/.git/
remote: Counting objects: 89973, done.
remote: Compressing objects: 100% (26745/26745), done.
remote: Total 89973 (delta 50970), reused 85013 (delta 47798)
Receiving objects: 100% (89973/89973), 349.86 MiB | 2.25 MiB/s, done.
Resolving deltas: 100% (50970/50970), done.
Checking out files: 100% (11722/11722), done.
ravn@bamboo:~/git$
Run Code Online (Sandbox Code Playgroud)
gitosis中没有git特定的配置变化.
有没有办法加快接收位到网络的能力?
编辑:我需要新的存储库与上游存储库正确连接.根据我的理解,这需要git来进行克隆,因此git之外的原始位复制将不起作用.
我可以通过两个步骤将其推送到存储库来备份我的本地.git:
git push --all ~/gitrepo
git push --tags ~/gitrepo
Run Code Online (Sandbox Code Playgroud)
我可以使用git bundle备份它.
我可以通过简单地复制整个目录或将其归档(压缩!)来备份它:
tar -zcvf gitrepo.tgz .git
Run Code Online (Sandbox Code Playgroud)
现在的问题是它们是否真的相同?(例如,logs不推送子目录)
该git push方法的优点是什么git bundle?
可以tar -zcvf被认为是"完美的git备份"吗?
我正在尝试定期同步git裸存储库,我的本地分支使用"--track"选项创建.这是我的配置(没有不必要的东西):
[core]
bare = true
[remote "origin"]
url = git@github.com:Ummon/D-LAN.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "website"]
remote = origin
merge = refs/heads/website
Run Code Online (Sandbox Code Playgroud)
我必须使用'cp'命令来更新本地分支:
git fetch --all
cp -r refs/remotes/origin/* refs/heads
Run Code Online (Sandbox Code Playgroud)
有更优雅的解决方案吗?
我使用克隆的存储库和分支在Git上遇到了一些问题,但我不可能找到答案.让我来描述一下:我们在这里有一个简单的主Git存储库,我们都可以从这里下载并推送到位于本地linux机器上并可通过ssh访问.我把这个克隆到我的usb拇指驱动器上,如下所示:
git clone ssh://adahl@gollum//net/repos/netcube/patches.git
Run Code Online (Sandbox Code Playgroud)
这给了我一个本地克隆,在我的拇指驱动器上有一个工作副本.我cd到这个,然后在这个克隆中看到一些分支:
cd patches
git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/stable
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都那么好,但是如果我在我的拇指驱动器上克隆存储库另一次到我的笔记本,稳定分支就会丢失.看到:
cd ..
git clone patches patches2
cd patches2
git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
我在克隆或克隆git fetch后尝试了几个选项,没有任何东西将stable分支带到patches2存储库.我假设我在这里缺乏理解git并且只是以错误的方式使用它.有人可以指点我的使用和/或理解错误吗?
我用克隆了一个git repo git clone --mirror,我想让镜子保持最新状态.到目前为止,我一直在使用git fetch --all,但我注意到在原始仓库中删除的分支不会在镜像仓库中删除.我看过如何更新git clone --mirror?但我尝试使用git remote update似乎不起作用 - 在原始仓库中删除的分支仍然在镜像仓库中可见.
这是我想做的:
我设置了 cron 作业来从上游获取所有更改并修剪已删除的任何分支,如下所示:
*/5 * * * * cd /home/git/myrepo.git && git fetch origin && git remote prune origin > /dev/null
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经尝试过(以及为什么失败):
1-将 git 存储库设置为镜像(如此处所述)
git clone --bare --mirror URL
Run Code Online (Sandbox Code Playgroud)
问题是,当它执行 时git remote prune,它还会删除对已推送到那里(而不是上游服务器)的“本地”更改的引用。
我还尝试让这个本地存储库成为两个独立存储库的镜像(具有相同的主存储库,但有一些不同的分支),并且在执行时遇到类似的问题git remote prune,它将删除来自其他存储库的分支。
2-仅将 git 设置为裸存储库:
git clone --bare URL
Run Code Online (Sandbox Code Playgroud)
但然后git fetch origin没有正确更新,它似乎正在下载对象,但不创建引用,然后只打印
* branch HEAD -> FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
并且当前分支的“位置”不会随上游服务器中的内容进行更新。
我也git remote update按照这里的描述进行了尝试,得到了相同的结果。
我可以使用以下命令将该存储库转换为镜像:
git …Run Code Online (Sandbox Code Playgroud)