Git 架设使用 HTTP 就是走 Web server 的权限, 走 SSH 就是各个帐号的权限. (Git 的 object 目录里面会有权限问题)
若多人共用的话, 要走 SSH 有下述几种方法:
建立新帐号(git), 由 git 帐号来统一管理(commit / push) 等 使用 gitosis 来管理(gitosis 可以设定到 "谁" 可以存取此专案). 使用 gitolite 来管理(gitolite 可以设定 "谁" 可以存取此专案, 而且, 可以设定只能存取哪个 branch 等路径)在此篇是採用 建立一个 git 帐号来统一管理的方法.
相关资料准备 系统套件安装 apt-get install git-core 产生 SSH 公钥 ssh-keygen -t rsa # 产生 id_rsa, id_rsa.pub mv id_rsa ~/.ssh/ # 将 id_rsa 放在 ~/.ssh/ 内. scp id_rsa.pub example.com:/tmp/id_rsa_user1.pub # 将 id_rsa.pub 丢到 Server 上, 大家的 public key 都需要传到 Server 上. Git Server 设定 ssh example.com adduser git --disabled-password # 建立一个 git 帐号, 所有动作都由 git 来执行, 可避免权限问题 su - git # 切换成 git 权限 cd; mkdir .ssh 将大家的 public key 加入 (可以远端透过 git 登入的问题, 会于后续设定解决) cat /tmp/id_rsa_user1.pub >> ~/.ssh/authorized_keys cat /tmp/id_rsa_user2.pub >> ~/.ssh/authorized_keys 註: commit / push 还是会保留原始 commit 人得名字, 不会是 git 建立 Git Repository ssh example.com su - git mkdir -p /var/cache/git/project_name.git cd /var/cache/git/project_name.git git init --bare --shared 新增资料到 Git Repository于自己的电脑, 下述两种作法皆可:
git clone git@example.com:/var/cache/git/project_name.git cd project_name vim test.txt git add . git commit -m 'add test.txt' git push origin master或
mkdir project_name cd project_name git init git add . git commit -m 'initial commit' git remote add origin git@example.com:/var/cache/git/project_name.git git push origin master 避免 Git 帐号登入 (安全问题) vim /etc/passwd # 修改 /bin/sh => /usr/bin/git-shell, git-shell 只能做 git 操作, 无法 Login.将
git:x:1000:1000::/home/git:/bin/sh
改成
git:x:1000:1000::/home/git:/usr/bin/git-shell
即可.
常用指令笔记 Clone: git clone git@example.com:/var/cache/git/project_name.git Commit & Push: git push 第一次 Commit / Push 的指令: git push origin master