zoukankan      html  css  js  c++  java
  • 通过Git在本地局域网中的两台电脑间同步代码

    0.前言

    一般情况下同步代码可以通过在GitHub/GitLab等网站新建远程仓库,所有机器都向仓库推送或者从仓库下拉更新。

    上述过程步骤也不算复杂,不过有时候我们考虑到仓库的安全性等因素,只想在局域网内共享仓库,并且允许局域网中指定的机器推送或下拉更新。

    这就是本文试图记录的操作过程的背景。

    1.新建中转仓库

    中转仓库其实是一个裸仓库,这个仓库文件夹里只有.git里的版本信息,没有代码。
    所有工作者都只与中转仓库建立联系,这样冲突只会发生在中转仓库,各机本地代码不会冲突,从而最大程度上避免混乱。

    cv:misc_codes cv$ mkdir myrepo.git && cd myrepo.git
    
    cv:myrepo.git cv$ git init --bare --shared
    
    cv:myrepo.git cv$ git remote add origin file:///Users/cv/misc_codes/myrepo.git
    
    cv:myrepo.git cv$ git remote
    origin
    

    显示结果为origin,表示我们操作成功且已经生效。

    然后注意要将中转仓库的路径设置为局域网共享状态。macOS系统下,“系统偏好设置”——>“共享”——>“文件共享”复选框——>“共享文件夹”添加仓库所在路径。

    2.构建本机克隆仓库

    在设置中转仓库的机器上新建克隆仓库,可以修改代码并上传。

    cv:misc_codes cv$ git clone file:///Users/cv/misc_codes/myrepo.git mylocalrepo_a.git
    
    cv:misc_codes cv$ cd mylocalrepo_a.git
    
    cv:mylocalrepo_a.git cv$ cat > README
    Hello world!
    

    修改之后保存并提交。

    cv:mylocalrepo_a.git cv$ git add .
    cv:mylocalrepo_a.git cv$ git commit -m "Init the test repo"
    cv:mylocalrepo_a.git cv$ git branch --unset-upstream
    cv:mylocalrepo_a.git cv$ git push -u origin --all
    

    3.在其他机器同步仓库

    在另外的机器上新建克隆仓库,通过ssh建立仓库之间的连接。可以用于拉取和上传更新。

    通过ssh的方式需要知道中转仓库所在机器的用户名和IP地址,基本格式为git clone ssh://username@ipaddr/path/to/repo.git localrepo.git。主要步骤展示如下。

    cvxy:misc_codes cvxy$ git clone ssh://cv@192.168.1.15/Users/cv/misc_codes/myrepo.git mylocalrepo_b.git
    
    cvxy:misc_codes cvxy$ cd mylocalrepo_b.git
    
    cvxy:mylocalrepo_b.git cvxy$ git pull origin master
    
    cvxy:mylocalrepo_b.git cvxy$ cat >> README
    Great idea.
    

    保存修改并推送到中转仓库。

    cvxy:mylocalrepo_b.git cvxy$ git add .
    cvxy:mylocalrepo_b.git cvxy$ git commit -m "Modification from machine b"
    cvxy:mylocalrepo_b.git cvxy$ git push origin master
    

    至此,在不创建远程仓库的前提下可以实现在不同机器之间的同步更新。

    (全文完)


    参考资料

    [1] Creating a Shared Repository Between Two Local Machines https://blogs.perficient.com/2016/10/11/creating-shared-repository-between-two-local-machine/

    [2] 使用git在局域网机器上进行代码同步 https://blog.csdn.net/sinat_24899403/article/details/103001865

    本文作者 :phillee
    发表日期 :2021年9月29日
    本文链接https://www.cnblogs.com/phillee/p/15353020.html
    版权声明 :自由转载-非商用-非衍生-保持署名(创意共享3.0许可协议/CC BY-NC-SA 3.0)。转载请注明出处!
    限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

    感谢您的支持

    ¥ 打赏

    微信支付

  • 相关阅读:
    AngularJS启动过程分析
    mongodb 基本用法大全
    bitbucket工程改名导致 repository does not exist. fatal: Could not read from remote repository.
    分散的配置文件VS集中的注册表
    让browserify接收命令行参数,在打包时parse yml配置文件
    vscode下ts-node传入cli参数
    d3 .each()
    d3选择全部子节点,不知道class和id
    d3 parse字符串形式的xml svg and append to element
    在浏览器端用es6,babel+browserify打包
  • 原文地址:https://www.cnblogs.com/phillee/p/15353020.html
Copyright © 2011-2022 走看看