纯用SSH管理GIT服务器
gitosis等管理git服务器有点小复杂,一般小规模开发没必要用,仅仅依靠Linux的SSH就可以管理了。步骤如下1 添加用户,并准备公钥私钥添加用户git,密码也是gitadduser dannypasswd dannyadduser gitpasswd gitroot用产生公钥在/root/.ssh/id_rsa下面ssh-k
·
gitosis等管理git服务器有点小复杂,一般小规模开发没必要用,仅仅依靠Linux的SSH就可以管理了。步骤如下
添加用户git,密码也是git
adduser danny
passwd danny
adduser git
passwd git
root用产生公钥在/root/.ssh/id_rsa下面
ssh-keygen -t rsa
然后分别su danny / su git,同样执行
ssh-keygen -t rsa
回到root下执行
cp /home/danny/.ssh/id_rsa.pub /home/git/.ssh/danny_rsa.pub
cd /home/git/.ssh/
cat danny_rsa.pub >> authorized_keys
cat authorized_keys
rm -rf danny_rsa.pub
chown git authorized_keys
mkdir /home/git/repos
chown -R git /home/git/repos
2 建立测试项目
切换到git用户,进入git主目录,建立testproject
su git
cd ~
mkdir /home/git/repos/testproject
cd /home/git/repos/testproject
初始化git库
git init
设置用户
git config user.email "git@ujs.edu.cn"
git config user.name "git"
在该目录下建立一个test文件,并提交。
vi test
git add test
git add --all 添加所有待添加文件
git commit -a -m "add test by git"
此时就建立了基础代码库。
创建分支,初始默认为master分支。注意:服务端当前所在分支不允许其他用户提交。
git branch develop
查看分支
git branch
切换分支
git checkout develop
这里我们只允许其它用户把修改提交到develop分支上,然后由管理员维护master分支,所以我们切回master分支。
git checkout master
3 克隆测试项目
切换到danny用户,进入danny的主目录
su danny
cd ~
git clone git@localhost:/home/git/repos/testproject
注意:clone只下载当前目录有的文件,不管你在master还是develop分支,只下载当前目录下有的文件。本例子中由于上面git切换回master分支了,所以这里clone的是master分支下的内容。
cd testproject
设置用户
git config user.email "danny_xcz@163.com"
git config user.name "danny"
在该目录下建立一个test文件,并提交。注意此时只是提交到danny目录下的库,并没有提交到git用户目录下的库。
vi test2
git add test2
git commit -a -m "add test2 by danny"
此时可以把更改提交到服务器上,由于git用户在master分支上,所以不能提交到master分支,只能提交到develop分支。
git push (origin master)改命令会报错refusing to update checked out branch: refs/heads/master
git push origin master:develop 把本地master分支提交到远程的develop分支
如果git用户想看到test2,必须切换到master分支。
4 在windows下,使用TortoiseGit连接
在管理员windows机器上通过mysygit的bash命令生成公钥,私钥;在 C:\Documents and Settings\Administrator\.ssh 目录下
ssh-keygen -t rsa
使用 D:\Program Files\TortoiseGit\bin\puttygen.exe,存为putty专用格式
"Load" Administrator\.ssh 目录下的id_rsa
"Save private kay" putty.ppk
同时将公钥中的那行复制到git/.ssh/authorized_keys中
使用TortoiseGit clone一个项目
ssh://git@172.20.1.7/home/git/repos/testproject
勾上Load Putty key "C:\Documents and Settings\Administrator\.ssh\putty.ppk"
注意此时远程的master和develop分支已经不一致了,develop分支多一个test2文件,由于git用户在master下面,所以clone下来只有test文件。必须pull最新的develop分支。
git pull origin develop
此时在本地添加test3文件并提交到git用户的develop分支。
git push origin master:develop
注意:不能push到服务器上当前所在的master分支,会报错。
更多推荐
已为社区贡献2条内容
所有评论(0)