我的服务器:CentOS 7.2
1.依赖库的安装
# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
# yum install gcc perl-ExtUtils-MakeMaker
2.卸载旧版本git (如果没有,直接到第三步)
如果有低版本的git,需要先卸载,再安装
# git –-version
查看系统带的版本
# yum remove git 卸载原来的git
3.下载最新版本的源码包
路径: /usr/local/git (git 是自己mkdir的目录)
cd /usr/local/git/ # 进入目录
# wget https://github.com/git/git/archive/v2.9.2.tar.gz # 下载
# # tar -xzvf v2.9.2.tar.gz # 解压
4.安装
# cd git-2.9.2
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install
5.添加环境变量
vim /etc/profile
#如果没有vim,则安装vim工具 yum install vim
添加这一条: export PATH="/usr/local/git/bin:$PATH"
source /etc/profile #是配置立即生效
6.查看版本号,安装成功了
# git --version
==================下边的很重要===============================
7.创建一个系统新用户tom,
useradd tom
# 操作完上一句之后,/home/文件夹下就会多一个tom文件夹
cd /data/git //切换到希望创建工作区的目录
git init --bare sample.git //创建一个Git仓库sample.git,此时Git会创建一个唯一分支master
chown -R tom:git sample.git //将sample.git的所有权从root修改到新创建的tom
9.在服务器端打开RSA认证
在文件/etc/ssh/sshd_config中添加下列三行内容:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
10.创建用于存放客户端公钥的文件(注意这里的路径)
cd /home/tom # 切换到tom用户下
mkdir .ssh
touch authorized_keys
vim authorized_keys # 打开放用户公钥的文件
# 把公钥保存在authorized_keys文件中, # 如何生成密钥:http://blog.youkuaiyun.com/permanent_2008/article/details/73839384
# 以上的做完,其实就可以在本地进行操作了
11.禁止用户git通过shell进行登录
将git:x:1000:1000::/home/git:/bin/bash
修改为:git:x:1000:1000::/home/git:/usr/bin/git-shell
----------------------大功告成,开始在本地操作了--------------------------------
12.在客户端clone远程git仓库
git clone tom@127.0.0.1:/data/git/sample.git (如果出错,可以直接先在本地推点文件上去,步骤13)
其中127.0.0.1是服务器端的IP地址,这里我随便写的
(由于进行了步骤9和步骤10的设置,所以在clone仓储的时候就无需再输入密码了)
13.本地文件操作
在文件夹git0413中,有个xingdao.py文件
$ git init
Initialized empty Git repository in C:/Users/风清/Desktop/git0413/.git/
$ git add .
$ git commit -m '初始化文件xingdao.py'
$ git remote add origin tom@127.0.0.1:/data/git/sample.git # 与远程建立连接
$ git push origin master # 推到远程origin的master分支上
成功啦!===========以下是后续添加的问题=======
遇到莫名其妙的错误们:
1.在push 时候抛出这样的错误
fatal: Unable to create temporary file: Permission denied
error: pack-objects died of signal 13
搜索后,发现也挺频繁的。大致就是这样:
// 登录git服务器,进入你的项目
cd your_rep.git
chmod -R g+ws *
chgrp -R git *
git config core.sharedRepository true
然后再回到你本地目录,输入 git repack master
参考文章:
https://blog.youkuaiyun.com/permanent_2008/article/details/73839315
https://segmentfault.com/a/1190000008403740
http://www.jackpu.com/jie-jue-git-unable-to-create-temporary-file/
=========以下是自己操作的随笔=============================
在服务器建一个git仓库,
/data/git/sample.git
在sample.git中,是用来存放前端,后端的文件,现在只有前端的文件,或者没有前端的文件
=========作为后端的我怎么操作======================
1.直接clone这个库下来
git clone tom@192.22.23.23:/data/git/sample.git //域名就写你的呗
2.cd sample # 进到这库中
3.把我自己的后端项目放进去
4.再执行一下git pull origin master
5.如果有冲突,就解决冲突(无就跳过)
6.git push origin master
# 记得每次push之前都要pull,因为不知道在这期间,有没有人push
# 如何删除远程仓库中的文件或者文件夹
1.git pull origin master
2.1 git rm hello.py # 删除hello.py文件
2.2 git rm -r hello # 删除hello文件夹,-r代表递归的方式(嵌套关系)
3 git commit -m '删除hello.py文件'
4.git push origin master # 重新提交,远程的hello.py文件也就会被删除