git本地协同

一.脚本下载

init.sh

#!/bin/bash
cd code
for dir in $(ls)
do
  cd $dir
  git config --local receive.denycurrentbranch ignore
  echo $dir
  cd ..
done

gitShare.sh

#!/bin/bash
git clone serveName@serveIp:/gitWareHousePath

 

二.操作步骤如下:

1、gitRemote.sh下载代码,这个脚本可能更新

2、执行init.sh脚本设置每个仓库,修改git默认的拒绝push操作

3、客户端通过命令获取本机的公钥,发送给服务端

#sublime-text ~/.ssh/id_rsa.pub

4、服务器端通过命令将客户端的公钥加到自己认证文件中

#sublime-text ~/.ssh/authorized_keys

5、客户端可以通过脚本gitShare.sh获取服务器端代码

更新代码: git pull

提交代码: git push

6、服务器端可以看到提交记录,但是要看到最新代码需要执行git reset --hard。

7、服务器开启命令:

#service sshd start 

 

三. 原理说明

1、主机0充当服务器,负责和远端仓库交互。注意要开启ssh服务

2、主机1、2、3...等充当客户端,将公钥发给服务器,通过gitShare.sh脚本拉取代码,通过git pull/push完成代码更新和推送操作

3、主机0也可以充当客户端,和其他客户端主机一样操作

image.png

 

server需要更新远端仓库代码:

那么需要先git reset --hard,将分支节点拉到最新,然后再git pull --rebase即可,如果有冲突就解决掉后git rebase --continue

client更新server更新后的代码:

使用git pull --rebase

 

posted @ 2020-03-26 21:34  Lunais  阅读(163)  评论(0编辑  收藏  举报