本地git仓库间的通信

同一台电脑的两个git仓库间如何通信呢?

首先要明确一点:git是分布式版本管理工具。也就是说各个git仓库间是相互独立的。

现在,我们在admin家目录下新建两个git仓库,分别取名为t1t2

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才能执行上述操作。

因为热爱,所以执着。