git及其repo的常用命令

锺离宸
2023-12-01

一、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的源码及其解释,请移步,这里就不过多赘述。

 类似资料: