... Rei ...
... cjlmonster@163.com ...
... 白开水与方便面 ...
... Rei ...
... cjlmonster@163.com ...
... 白开水与方便面 ...
2021-06-11 约 350 字 预计阅读 2 分钟 Git
开发的时候,如果选用 git 做版本控制的话,通常情况下,首先在本地电脑上安装 git 客户端进行版本控制,而后了,有下面几种情况:
上面的三种情况下,第一种只需一台电脑,自个玩就可以了,后两种都是把代码托管到另一台服务器上,GitHub 和 Gitee,免费的开源代码托管平台,其后台使用的就是git服务器,因为是开源的,所以托管到上面的代码,别人也能拷贝和查看,当然也是可以建私人仓库,不过要收费,貌似 Gitee 可以建免费的私人仓库(不清楚)。下面详细介绍下自建 git 服务器,把代码托管到自己的私人服务器上。
客户端生成用于ssh登录的密钥对,打开 Git Bash 窗口,输入 ssh_keygen 命令创建
$ ssh_keygen -t rsa -C “developer1”
输入命令后,一路按回车就可以了,最后会在用户的家目录里生成 .ssh 目录,并存放有两个文件,其中 id.rsa为私钥,id_rsa.pub为公钥 接着把公钥上传到git服务器上,可以使用ftp,或用其它更简单的方式,下面会讲
查看git用户是否存在
$ id git
不存在则创建git用户,用于操作远程仓库
$ sudo useradd git
设置密码
$ sudo passwd git
查看用户信息
$ sudo cat /etc/passwd
创建 git用户 家目录并设置所有者为 git
$ cd /home
$ sudo mkdir git
$ sudo chown -R git:git git
输入命令 ll 查看
设置 git用户的登录shell为/usr/local/bin/git-shell
,禁用其登录,但可以使用 ssh命令
$ sudo usermod -s /usr/local/bin/git-shell git
这里配置ssh免密码登录的是 git用户,所以先进入git用户的家目录里创建 .ssh 目录,然后在 .ssh 目录里创建 authorized_keys 文件,这个文件是用于存放客户端公钥的
$ cd /home/git
$ sudo mkdir .ssh
$ sudo touch .ssh/authorized_keys
将 .ssh 目录和 authorized_keys 文件的所有者改为git
$ sudo chown -R git:git .ssh
将 .ssh 目录的权限改为 700
$ sudo chmod 700 .ssh
将 authorized_keys 文件的权限改为 600
$ sudo chmod 600 .ssh/authorized_keys
客户端首先通过 ssh_keygen 生成公私钥,然后可以通过以下方式将公钥存到 authorized_keys 文件里:
$ cat » /homt/git/.ssh/authorized_keys < /tmp/id_rsa.pub
$ ssh cjl@192.168.2.178 “cat » /home/git/.ssh/authorized_keys” < ~/.ssh/id_rsa.pub
$ scp ~/.ssh/id_rsa.pub cjl@192.168.2.178:/home/git/.ssh/authorized_keys
cjl@192.168.2.178
这个是我 Linux Mint 虚拟机的主用户,因为git用户的登录shell已被设为/usr/local/bin/git-shell
,不能用于远程登录,因此这里用了权限更高的主用户 cjl ,假设git用户没有被禁止登录,也是可以改为git@192.168.2.178
的,不过不建议,最好还是禁用登录
上传完后查看
$ sudo cat .ssh/authorized_keys
配置 ssh 免密登录完成
首先进入到git用户的家目录,创建一个目录 repos,用于保存仓库
$ cd /home/git
$ sudo mkdir repos
创建一个仓库 sample.git,放在 repos 目录下,服务端仓库目录的名字,一般是以 .git 做后缀的
$ cd repos
$ sudo mkdir sample.git
初始化仓库并更改所有者为 git用户
$ sudo git init –bare sample.git
$ sudo chown -R git:git sample.git
ps: 使用git init --bare
创建的仓库为“裸仓库”或叫“空仓库”,这种仓库是没有工作区的,因此不能进行版本控制的一些提交修改等功能,但可以查看日志。一般在服务器端使用,作为“共享”仓库,也可以理解为团队开发的远程中央仓库。
上面已经把客户端和服务端配置完了,接着实际操作一下,客户端开发并使用版本控制,并托管到服务端。
首先在客户端打开 Git Bash,输入以下命令,把 sample.git 这个仓库拷贝到本地进行开发
$ git clone git@192.168.2.178:repos/sample.git
ps: 上面的git@192.168.2.178:repos/sample.git
为 sample.git 仓库的远程 ssh 地址,假设服务端又在 repos 目录下创建了一个仓库,名字为 example.git,则 ssh 地址为git@192.168.2.178:repos/example.git
此时已经把 sample.git 拷贝下来了,进入 sample.git 输入git log
查看提交日志,提示没有任何提交
$ cd sample.git
$ git log
添加一个文件到工作区
$ echo “测试添加文件” > test.txt
$ ll
$ cat test.txt
查看工作区状态,是否有更改
$ git status
提示有文件更改了,需要提交,在提交之前先要把它添加到暂存区
$ git add test.txt
$ git status
最后提交
$ git commit -m “首次提交代码”
$ git status
$ git log
通过 git log
命令,可以看到提交的信息了
将本地更新推送到远程仓库里
$ git push origin master
回到服务器端,进入到 sample.git 仓库了,通过git log
查看提交日志
$ cd /home/git/repos/sample.git
$ git log
已经可以看到客户端提交的更新了
ps: 开发者人数不多的情况下,可以把每个开发者本机的公钥都保存到git服务器的/home/git/.ssh/authorized_keys
文件里,然后就可以共同开发这个项目了,但是如果人数比较多的话,这样每个开发者都上传一遍,不太方便,这时可以用 gitosis 来进行项目的团队管理
主题色
主色
强调色