文章目录

  • 1. 为什么要搭建 `Git` 局域网共享仓库
  • 2. 新建中转仓库
  • 3. 构建本机克隆仓库
  • 4. 在其他机器同步仓库


1. 为什么要搭建 Git 局域网共享仓库

  • 一般情况下同步代码可以通过在 GitHub/GitLab 等网站新建远程仓库,所有机器都向仓库推送或者从仓库下拉更新。
  • 不过有时候我们考虑到仓库的安全性等因素,只想在局域网内共享仓库,并且允许局域网中指定的机器推送或下拉更新,所以搭建 Git 局域网共享仓库就很有必要了。

2. 新建中转仓库

  • 中转仓库其实是一个裸仓库,这个仓库文件夹里只有 .git 里的版本信息,没有代码。所有工作者都只与中转仓库建立联系,这样冲突只会发生在中转仓库,各机本地代码不会冲突,从而最大程度上避免混乱。
$ mkdir xxx-master.git && cd xxx-master.git
$ git init --bare --shared
$ git remote add origin file:///Library/AndroidWork/work_git/xxx-master.git

- 查看操作是否成功且生效
$ 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
  • 至此,在不创建远程仓库的前提下可以实现在不同机器之间的同步更新。