2016年2月26日星期五

MAC_041:使用 ssh 搭建本地 git 服务器

环境:OS X EI Capitan 10.11.3 + git 2.3.2

MAC 默认安装了git,使用git --version可以查看git版本。

1. 创建一个新用户,作为 git 客户端用户
 
2. 允许使用 ssh 远程登录到本机
这里只允许 Dove 用户远程登录到本机。


以下操作在 Dove 用户下进行,如果不是 Dove 用户,请使用 su - dove 切换。
(1)$ ssh-keygen
创建公私钥对,默认一路回车即可。
(2)$ scp ~/.ssh/id_rsa.pub dove@MaPingdeMacBook-Pro.local:.ssh/authorized_keys
(3)$ ssh dove@MaPingdeMacBook-Pro.local
如果前面的步骤都正确的话,此步应该不在提示输入 dove 的口令而直接登入。

3. 在服务器上创建 git 仓库并初始化
(1)$ mkdir -p /Users/maping/git/repositories/local/newrepo.git
(2)$ cd /Users/maping/git/repositories/local/newrepo.git
(3)$ git init --bare
创建一个裸仓库,之所以叫裸仓库是因为这个仓库只保存 git 历史提交的版本信息,而不允许用户在上面进行各种 git 操作,即不允许作为本地 git 仓库使用。
(4)$ cd ..
(5)$ chmod -R 777 newrepo.git

4.  使用 Dove 用户 git clone 服务器上的 git 仓库
以下操作在 Dove 用户下进行,如果不是 Dove 用户,请使用 su - dove 切换。
(1)$ mkdir -p /Users/dove/mygit/newrepo
(2)$ cd /Users/dove/mygit/newrepo
(3)$ git init
(4)$ touch readme.txt
(5)$ git add readme.txt
(6)$ git commit -m "initial commit"
(7)$ git remote add origin dove@MaPingdeMacBook-Pro.local:/Users/maping/git/repositories/local/newrepo.git
将本地 git 库和远程 git 库关联在一起。
(8)$ git push origin master
把本地 master 分支的最新修改推送至远程 origin 分支。
(9)$ touch 1.txt
(10)$ git add 1.txt
(11)$ git commit -m "test commit"
(12)$ git push origin master
把本地 master 分支的最新修改推送至远程 origin 分支。

5.  使用 Maping 用户 git clone 服务器上的 git 仓库
以下操作在 Maping 用户下进行,如果不是 Maping 用户,请使用 su - maping 切换。
(1)cd /Users/maping/mygit/
(2)git clone dove@MaPingdeMacBook-Pro.local:/Users/maping/git/repositories/local/newrepo.git
(3)cd newrepo
可以看到之前 Dove 用户提交的 readme.txt 和 1.txt 文件。
(4)git pull origin master
(5)$ touch 2.txt
(6)$ git add 2.txt
(7)$ git commit -m "add 2.txt"
(8)$ git push origin master
把本地 master 分支的最新修改推送至远程 origin 分支。

5.  使用 Dove 用户 git pull 提交到服务器上的修改内容
以下操作在 Dove 用户下进行,如果不是 Dove 用户,请使用 su - dove 切换。 
(1)$ cd /Users/dove/mygit/newrepo
(2)$ git pull origin master
可以看到之前 Maping 用户提交的 2.txt 文件。

参考文献:
1. http://blog.csdn.net/liuyuyefz/article/details/17025709
2. http://blog.csdn.net/liuyuyefz/article/details/17025905
3. http://blog.smitec.net/posts/setting-up-a-git-server-on-osx/

没有评论: