关于Git托管,您可以有许多选项。 GitHub,Gitlab和Bitbucket是流行的解决方案,但是创建自己的Git服务器也是值得考虑的解决方案。设置Git服务器可让您创建私有存储库,而不受提供商免费计划的限制。

在教程中,我们说明了如何在Linux上设置Git服务器。如果您的存储库很多并且合作者都会使用git,则此方案非常有用。包括使用apt/yum安装git,创建管理Git仓库的用户,配置SSH密钥实现无密码推送,将git remote添加到本地仓库,推送提交到远程仓库。

否则,您应该考虑安装自托管的git应用程序,例如Gitea,GogsGitlab。你可以在任何远程Linux机器甚至本地系统上设置Git服务器。

配置Git服务器

第一步是在您的服务器上安装Git。如果您使用的是Debian或Ubuntu,请以具有sudo权限的用户运行以下命令,使用apt命令来刷新本地软件包索引并安装git

sudo apt update && sudo apt install git

要在CentOS服务器上安装git软件包,请输入以下命令:

yum install git -y

接下来,使用useradd命令创建一个新用户,该用户将用于管理Git仓库:

sudo useradd -r -m -U -d /home/git -s /bin/bash git

用户家目录设置为/home/git。所有存储库都将存储在此目录下。我们没有为用户 git设置密码,只有使用ssh才能登录。使用su命令切换到用户git:

sudo su - git

运行以下命令以创建SSH目录,并设置正确的权限

mkdir -p ~/.ssh && chmod 0700 ~/.ssh

使用touch命令创建文件~/.ssh/authorized_keys,该文件将包含授权用户的SSH密钥:

touch ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys
/.ssh/authorized_keys

至此。服务器设置完成。您现在可以创建自己的第一个Git存储库。运行以下命令以创建新的空git仓库:

git init --bare ~/projectname.git

您可以根据需要命名目录。重要的是要在git用户家目录下创建仓库。

Initialized empty Git repository in /home/git/projectname.git/

配置本地Git仓库

要能够将本地git提交推送到Git服务器,您需要将本地用户SSH公钥添加到远程git用户的authorized_keys文件中。如果您已经在本地系统上创建了SSH密钥对,则可以使用cat命令显示公钥内容:

cat ~/.ssh/id_rsa.pub

输出应类似于以下内容:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDd/mnMzHwjUzK8g3ldfsfRpJuC16mhWamaXRk8ySQrD/dzpbRLfDnZsLxCzRoq+ZzFHGwcQlJergtergdHGRrO8FE5jl3IWRRp+mP12qYw== danny@myfreax.com
~/.ssh/id_rsa.pub

如果收到错误消息No such file or directory,则表明您的本地计算机上没有生成SSH密钥对。要生成新的SSH密钥对,请使用以下命令:

ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"

复制上述cat命令的输出,然后在服务器上,使用你喜欢的文本编辑器打开~/.ssh/authorized_keys文件。在本教程中我们使用vim打开文件

sudo vim /home/git/.ssh/authorized_keys

然后将从本地计算机的公钥内容复制粘贴到服务器的~/.ssh/authorized_keys文件中:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDd/mnMzHwjUzK8g3ldfsfRpJuC16mhWamaXRk8ySQrD/dzpbRLfDnZsLxCzRoq+ZzFHGwcQlJergtergdHGRrO8FE5jl3IWRRp+mP12qYw== danny@myfreax.com
你的~/.ssh/id_rsa.pub

整个公钥文本在你的authorized_keys文件中应该都在一行上。

我们假设您的本地计算机上已经安装了Git。如果没有安装,请按照前面几节中所述的相同方法进行安装。

如果您现有项目没有git版本控制,请使用cd命令切换项目目录。如果您是从头开始的,请创建项目目录,然后切换到该目录:

cd /path/to/local/project

执行以下命令初始化git存储库:

git init .

最后一步是将git remote添加到您的本地仓库

git remote add origin git@git_server_ip:projectname.git

不要忘记用您的Git服务器主机名或IP地址替换git_server_ip。要验证所有设置是否正确,请创建一个测试文件

touch test_file

将更改添加到暂存区域:

git add .

提交更改:

git commit -m "descriptive message"

将本地仓库库提交推送到远程仓库:

git push -u origin master

如果所有设置均正确,则输出应类似于以下内容:

Counting objects: 3, done.
Writing objects: 100% (3/3), 218 bytes | 218.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git_server_ip:projectname.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

要添加新的协作者,只需将其公共SSH密钥复制到git用户的~/.ssh/authorized_keys文件中即可。

您可以使用相同的步骤来创建新的仓库。重要的是,在将git remote添加到本地存储库之前,远程存储库必须存在。

结论

在本教程中,我们向您展示了如何设置自己的私有Git服务器并创建存储库。如果您遇到问题或有反馈,请在下面发表评论。