局域网GIT仓库的有趣玩法

905 阅读1分钟

局域网内A主机上新建Git仓库

mkdir test-git
cd test-git
git init // 可以修改源码的仓库,我用了这个    
git --bare init // 裸仓库

局域网内B主机 ssh克隆

git clone zhangsan@172.25.179.75:test-git    // test-git就在A主机的zhangsan用户目录下

B主机提交代码时,出了问题

error: refusing to update checked out branch: refs/heads/master

根源是我用git init 初始化了仓库
// 但我不想改成裸仓库

git仓库默认拒绝了push操作,需要进行设置,
修改.git/config文件后面添加如下代码:

[receive]
denyCurrentBranch = ignore

A主机的git仓库处于当前分支时,是看不到新的推送变动,但可以看到有修改状态
使用命令 git reset --hard 才能看到push后的内容
所以建议B主机只推开发分支,让A主机来合并到master分支.

最终目的

局域网内A主机已有git仓库(它也是克隆别人的)
A主机新建了开发分支

局域网内B主机 ssh克隆这个仓库
玩法如上!!!

很有用的玩法

  1. 局域网内不同主机上跑不同分支,局域网A主机作为仓库,集中管理这些分支,最终的修改由局域网仓库推入远程主仓库.

  2. 局域网内多个平等的分支互认大家都是局域网仓库,相互之间都是不推送,只拉取.