1. 为什么要搭建 Git
局域网共享仓库
- 一般情况下同步代码可以通过在
GitHub/GitLab
等网站新建远程仓库,所有机器都向仓库推送或者从仓库下拉更新。 - 不过有时候我们考虑到仓库的安全性等因素,只想在局域网内共享仓库,并且允许局域网中指定的机器推送或下拉更新,所以搭建
Git
局域网共享仓库就很有必要了。
2. 新建中转仓库
- 中转仓库其实是一个裸仓库,这个仓库文件夹里只有
.git
里的版本信息,没有代码。所有工作者都只与中转仓库建立联系,这样冲突只会发生在中转仓库,各机本地代码不会冲突,从而最大程度上避免混乱。
$ mkdir xxx-master.git && cd xxx-master.git
$ git init --bare --shared
$ git remote add origin file:/
- 查看操作是否成功且生效
$ git remote
- 显示结果为 origin,表示我们操作成功且已经生效
- 注意:要将中转仓库的路径设置为局域网共享状态。
- (1)
MacOS
系统下,“系统偏好设置”—>“共享”—>“文件共享”—>“共享文件夹”添加仓库所在路径。 - (2)
MacOs
系统下,“系统偏好设置”—>“共享”—>“远程登陆”点击勾选。
3. 构建本机克隆仓库
- 在设置中转仓库的机器上新建克隆仓库,可以修改代码并上传。
$ git clone file:///Library/AndroidWork/work_git/xxx-master.git xxx-master
$ cd xxx-master
- 新建一个 xxx.java 文件,执行命令:
$ vim HelloWorld.java
- 文件内容为:
public class HelloWorld{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
$ git add .
$ git commit -m "add: init the xxx-master repo."
$ git branch --unset-upstream
$ git push -u origin --all
4. 在其他机器同步仓库
- 在另外的机器上新建克隆仓库,通过
ssh
建立仓库之间的连接。可以用于拉取和上传更新。 - 通过
ssh
的方式需要知道中转仓库所在机器的用户名和 IP
地址,主要步骤展示如下。
$ git clone ssh://用户名@IP地址/Library/AndroidWork/work_git/xxx-master.git xxx-master-test
$ cd xxx-master-test
$ git pull origin master
$ vim HelloWorld.java
- 修改 HelloWorld.java 文件内容,修后的内容为:
public class HelloWorld{
public static void main(String[] args) {
System.out.println("Hello World Git!");
}
}
$ git add .
$ git commit -m "mod: Modify file content."
$ git push origin master
- 至此,在不创建远程仓库的前提下可以实现在不同机器之间的同步更新。