Git 可以使用四种主要的协议来传输数据:本地传输,SSH 协议,Git 协议和 HTTP 协议。下面分别介绍一下哪些情形应该使用(或避免使用)这些协议。
值得注意的是,除了 HTTP 协议外,其他所有协议都要求在服务器端安装并运行 Git
1. 本地
克隆一个本地版本库,可以执行如下的命令:
$ git clone /opt/git/project.git
或你可以执行这个命令:
$ git clone file:///opt/git/project.git
要增加一个本地版本库到现有的 Git 项目,可以执行如下的命令:
$ git remote add local_proj /opt/git/project.git
2. SSH
通过 SSH 协议克隆版本库,你可以指定一个 ssh:// 的 URL:
$ git clone ssh://user@server/project.git
或者使用一个简短的 scp 式的写法:
$ git clone user@server:project.gitct.git
3. GIT
GIT协议无安全控制,一般不用。
使用包,yum等工具都可以,自行编译也OK。
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
yum install git
根据环境不同,可能需要的依赖包也不同,安装git完成。
初始化服务器端仓库:
git init –bare sample.git
此时,其他通过 SSH 连接这台服务器并拥有权限的使用者就可以克隆你的仓库。
$ git clone user@ip:/opt/git/my_project.git
如果一个用户,通过使用 SSH 连接到一个服务器,并且其对 /opt/git/my_project.git 目录拥有可写权限,那么他将自动拥有推送权限。
如果到该项目目录中运行 git init 命令,并加上 --shared 选项,那么 Git 会自动修改该仓库目录的组权限为可写。
$ ssh user@git.example.com
$ cd /opt/git/my_project.git
$ git init --bare –shared
至此,最简单的git服务器端已搭建完成,可以连接它并推送了。
常用方法是让每个需要写权限的人提供SSH公钥,将其加入git账户的 ~/.ssh/authorized_keys 文件。 这样,所有人都将通过git账户访问主机。
使用 authorized_keys 方法来对用户进行认证:
首先,创建一个操作系统用户 git,并为其建立一个 .ssh 目录。
将公钥加入系统用户 git 的 .ssh/authorized_keys 文件的末尾:
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
在其它用户比如root下也可以这样做,不过建议建立单独的git用户。
在linux下使用ssh-keygen生成密钥,文件存放于~/.ssh目录下,文件名为id_rsa,后缀为.pub是公钥,另一个是私钥;
windows下文件位于用户目录/.ssh/。
服务器端:
git init –bare python_usual.git
client:
#在已有仓库下连接并推送,公钥已配置
git remote add 130 root@ip:/home/git/python_usual.git
git push 130
输出:
Enumerating objects: 11, done.
Counting objects: 100% (11/11), done.
Delta compression using up to 4 threads
Compressing objects: 100% (8/8), done.
Writing objects: 100% (11/11), 3.02 KiB | 343.00 KiB/s, done.
Total 11 (delta 0), reused 0 (delta 0)
To 192.168.199.130:/home/git/python_usual.git
* [new branch] master -> master
server验证:
cd /home/git/python_usual.git
git log
输出:
commit 9b37ad45c0ce78a2c7ecd8e109bc7282d87e24db
Author:name<…>
…………………
验证推送成功。
原文:https://www.cnblogs.com/wodeboke-y/p/9866150.html