一、git仓库代码同步到另一个代码仓库
分以下两中情况
1、只有一个分支,同时没有其他标签
1)git clone git@xxxxx:HOST/build.git
2)进入到build中
cd build
3)删除build下的隐藏文件.git,然后适用git的命令上传到新的仓库即可,命令如下
rm .git -rf
git init
git add *
git commit -m "xxxx"
git push -u origin master
2、原来的仓库有多个分支,或者已经打了很多的标签
1)拉取代码
git clone --bare git@code.com.cn:HOST/repo-git-old.git
2) 进入文件中
cd repo-git-old.git
3)执行上传命令(注意创建的仓库一定是空仓),等待完成即可
git push --mirror git@code.com.cn:HOST/repo-git-new.git
到此就完成了仓库的复制
二、接下来在说说repo用法
对于repo来说,最重要的不是搞清楚它都有那些命令,而是需要搞清楚其基本用法即可,因为多数人可能用不到太过于复杂的命令,接下来我将结合自身理解与官方资料介绍下其使用。
首先是安装:
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
$ export PATH=$PATH:~/bin
根据上面三条命令就可以安装成功
安装后需要注意一点,如果你是在官方下载的,里面大约在144行左右,有如下内容
142 REPO_URL = os.environ.get('REPO_URL', None)
143 if not REPO_URL:
144 ***REPO_URL = 'git@code.com.cn:HOST/repo-git.git'***
145 REPO_REV = os.environ.get('REPO_REV')
146 if not REPO_REV:
你需要根据该地址下载repo-git的仓库,然后上传到自己的服务器上
且将该地址修改为你自己的repo-git仓库。这样会方便后续的一些操作,同时也增加你拉取代码的速度
接下来就是使用其拉取git仓库,repo主要是用来管理git仓库的。它可以通过其xml文件将仓库代码按照我们自己的本地代码结构拉取下来。
拉取命令如下:
repo init -u git://android.git.kernel.org/platform/manifest.git --m manifest.xml
repo sync
git://android.git.kernel.org/platform/manifest.git这个仓库是用户自己创建,用来存放xml文件的
-m 后跟的参数就是你自己创建的.xml文件,必须是真实存在的,否则将无法拉取。我在这里提供一个书写的范本,可使用于拉取最新的代码。如下所示:
拉取仓库git@code.byd.com.cn:platform/toolchain.git的代码,如下,git@code.byd.com.cn:platform转化为ssh://git@code.com.cn/platform赋值给fetch,并且给他起个名字叫sdk,后续可用sdk代替它
default中revision指定了拉取主分支的最新代码,也可用仓库哈希值代替。
projeck中首先是要拉取的仓库名称,其次是拉取到本地的路径,最后执行仓库所在的链接。具体如下
<?xml version="1.0" encoding="UTF-8" ?>
<manifest>
<remote fetch="ssh://git@code.com.cn/platform" name="sdk"/>
<default sync-j="4" revision="master"/>
<project name="toolchain.git" path="sdk/toolchain" remote="sdk"/>
</manifest>
如果需要看repo的源码及其解释,请移步,这里就不过多赘述。