在服务器上搭建 Git

参考链接:https://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E6%90%AD%E5%BB%BA-Git

在本地创建git_server_test文件目录

  1. mkdir git_server_test
  2. cd git_server_test
  3. touch hello.txt

执行git初始化

在git_server_test目录下,初始化

  1. git init
  2. git add .
  3. git commit -m "init"

克隆一个.git裸仓库

在开始架设 Git 服务器前,需要把现有仓库导出为裸仓库——即一个不包含当前工作目录的仓库。
为了通过克隆你的仓库来创建一个新的裸仓库,你需要在克隆命令后加上 —bare 选项。
返回git_server_test的上级目录,执行以下命令

  1. git clone --bare ./git_server_test git_server_test.git

现在目录下会有一个git_server_test.git目录,包含.git目录的副本

把裸仓库放到服务器

有了裸仓库的副本,剩下要做的就是把裸仓库放到服务器上.
通过以下命令复制你的裸仓库来创建一个新仓库

  1. scp -r git_server_test.git root@1.123.34.35:/home/gitserver
  2. cd /home/gitserver
  3. ls
  4. # git_server_test.git

在/home/gitserver目录下会出现git_server_test.git目录。

在本地clone服务器代码

在本地切换一个新的目录下,clone代码

  1. git clone root@1.123.34.35:/home/gitserver/git_server_test.git

将代码clone到本地,查看目录会显示hello.txt文件。
在改目录下修改文件vi hello.txt,添加hello内容。
然后提交并push代码

  1. git add .
  2. git commit -m "add hello text"
  3. git push origin master

推送成功,可以在另外一个git_server_test目录中查看是否成功。

查看推送是否成功

切换到第一步创建的git_server_test目录下,此时无法直接执行pull命令,因为还没添加远程地址,
首先添加远程地址

  1. git remote add origin root@1.123.34.35:/home/gitserver/git_server_test.git

查看远程地址是否成功

  1. git remote -v

成功后就可以执行git pull origin master。查看hello.txt内容已经更新。

删除远程地址

  1. git remote rm origin

生成ssh公钥免密码登录

查看本地的公钥

  1. cat ~/.ssh/id_rsa.pub
  2. ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
  3. GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
  4. Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
  5. t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
  6. mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
  7. NrRFi9wrf+M7Q== schacon@mylaptop.local

如果该文件不存在,可以通过ssh-keygen生成

  1. % ssh-keygen
  2. Generating public/private rsa key pair.
  3. Enter file in which to save the key (/home/xiaq/.ssh/id_rsa):
  4. Enter passphrase (empty for no passphrase):
  5. Enter same passphrase again:
  6. Your identification has been saved in ~/.ssh/id_rsa.
  7. Your public key has been saved in ~/.ssh/id_rsa.pub.
  8. The key fingerprint is:
  9. 8a:77:ec:a1:77:42:8d:5d:ab:17:33:ac:87:06:20:3c xiaq@blackie
  10. The key's randomart image is:
  11. +--[ RSA 2048]----+
  12. | |
  13. | |
  14. | . |
  15. | E . . |
  16. | o .S+ o . |
  17. | . o+ o * |
  18. | . o.+. + + |
  19. | . +o.* o |
  20. | ...+ o |
  21. +-----------------+

添加本地公钥到服务器

在主机上建立一个 git 账户,让每个需要写权限的人发送一个 SSH 公钥, 然后将其加入 git 账户的 ~/.ssh/authorized_keys 文件。
将本地的id_rsa.pub内容添加到~/.ssh/authorized_keys文件。