一.在ubuntu中搭建git服务器
1.安装git和openssh
sudo apt-get install git-core openssh-server openssh-client
若有问题可以先用apt-get 更新
安装成功可以用git version查看版本
2.创建git用户
sudo adduser git 安装git用户
创建ssh证书认证文件 (新建的用户可能使用不了 sudo ,需要修改配置,参考:https://www.cnblogs.com/zox2011/archive/2013/05/28/3103824.html)
sudo mkdir /home/git/.ssh
sudo touch /home/git/.ssh/authorized_keys
-- 修改authorized_keys 文件的权限,之后要对其进行修改,将用户的公共密匙,写入到这个文件中
sudo chmod 777 /home/git/.ssh/authorized_keys
二.安装git客户端
window版本下载地址https://git-scm.com/download/win
ubuntu版本安装sudo apt-get install git
安装完成之后window版本右键打开Git Bash Here,ubuntu版本直接敲命令:
ssh-keygen -t rsa生成的密钥文件window系统中在c:\user\Administrator\.ssh,该目录中将id_rsa.pub文件的内容copy到/home/git/.ssh/authorized_keys中
ubuntu系统中在/home/username/.ssh/文件夹中
cat ./id_rsa.pub
-- 将内容追加到 /home/git/.ssh/authorized_keys 这个文件中
echo "上一步复制的公钥内容" >> /home/git/.ssh/authorized_keys
-- 修改authorized_keys文件的权限
sudo chmod 700 /home/git
sudo chmod 700 /home/git/.ssh
sudo chmod 600 /home/git/.ssh/authorized_keys
sudo chown -R git:git /home/git
sudo chown -R git:git /home/git/.ssh
sudo chown -R git:git /home/git/.ssh/authorized_keys
-- 创建一个测试的代码仓库,选择一个目录作为git仓库位置,假设是 /home/test 进入这个目录
cd /home
mkdir test
sudo git init --bare test.git
-- Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:
sudo chown -R git:git test.git
-- 禁用shell登录
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
三,使用git客户端
1.git服务器到本地
window系统右键Git Bash Here,ubuntu系统直接输入
git clone git@服务器ip:/home/test/test.git
此时若出现Permission denied 首先检查ssh,看ssh是否允许git用户,vi /etc/ssh/sshd_config 文件首先看AllowUsers中是否有git
如果还是不可以执行
eval `ssh-agent`和ssh-add ~/.ssh/id_rsa
2.本地到git服务器
git status 查看修改状态
git add .增加修改文件
git commit -m "上传提示"
git push 上传代码
3.其他辅助命令
git log 查看提交日志
git pull 更新代码
git branch 查看分支
git branch 分支名 创建分支
git checkout 分支名 切花分支
git checkout -b 分支名(创建并切换分支)
git merge 分支名 合并某分支到当前分支
git branch -d 分支名(强行删除 -D) 删除分支
1、退回至缓存区的coding回退
git reset [filename1]
2、会退到制定版本
git reset –hard 版本号(版本号为commit后的)