同一台电脑的两个git仓库间如何通信呢?
首先要明确一点:git是分布式版本管理工具。也就是说各个git仓库间是相互独立的。
现在,我们在admin
家目录下新建两个git仓库,分别取名为t1
和t2
:
1 2 3 4 5
| [admin@bravo ~]$ git init t1 Initialized empty Git repository in /home/admin/t1/.git/ [admin@bravo ~]$ git init t2 Initialized empty Git repository in /home/admin/t2/.git/ [admin@bravo t1]$
|
然后,进入t1目录,创建一个名为t1的文件,并加入git跟踪
1 2 3 4 5 6 7
| [admin@bravo t1]$ touch t1 [admin@bravo t1]$ git add . [admin@bravo t1]$ git commit -m 'create t1' [master (root-commit) 701f8b8] create t1 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 t1 [admin@bravo t1]$
|
接下来,进入t2目录,并关联t1仓库
1 2 3 4 5
| [admin@bravo t1]$ cd ../t2 [admin@bravo t2]$ git remote add t1 /home/admin/t1 [admin@bravo t2]$ git remote -vv t1 /home/admin/t1 (fetch) t1 /home/admin/t1 (push)
|
最后,拉取t1目录中的文件
1 2 3 4 5 6 7 8 9 10
| [admin@bravo t2]$ git fetch t1 remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From /home/admin/t1 * [new branch] master -> t1/master [admin@bravo t2]$ git merge t1/master [admin@bravo t2]$ ls t1 [admin@bravo t2]$
|
好了,现在你就可以在t2仓库中同步到t1仓库中的内容了,由于git能够精确到行,因此很方便文件冲突的解决。
说了这么多,这有什么用呢?
在我们开发时,经常是前后端分离的,而且大家的代码都在同一台测试服务器上,一个完整的功能需要前后端代码合并后才能测试,这种方式就能完美合并前后端代码了。
注意:首先要对被拉取代码的目录拥有读取权限,也就是t1目录要有r才能执行上述操作。