如何设置 git 服务器

当涉及到 Git 托管时,您可以有许多选择, GitHub , Gitlab 和 Bitbucket 是受欢迎的解决方案,但是运行自己的 Git 服务器也是值得考虑的替代方案。

设置 Git Server 可以让您创建私有存储库,而不受提供商免费计划的限制。在本指南中,我们解释了如何在 Linux 上设置裸 Git 服务器。如果您的存储库很少并且合作者都精通技术,则此设置非常有用。否则,您应该考虑安装自托管的 git 应用程序,例如 GogsGitlab

您可以在任何远程 Linux 机器甚至本地系统上设置 Git 服务器。

安装 Git 服务器

第一步是在您的服务器上安装 Git 。

如果您使用的是 Debian 或 Ubuntu ,请以 sudo 用户身份运行以下命令来刷新本地软件包索引并安装 git

sudo apt update && sudo apt install git

在 CentOS 服务器上安装 git 软件包,请输入:

sudo yum install git

接下来,创建一个新用户来管理 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

创建一个名为 ~/.ssh/authorized_keys 的文件,该文件将包含授权用户的 SSH 密钥:

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

现在,服务器设置完成。现在您可以创建您的第一个 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 ~/.ssh/id_rsa.pub

输出应类似于以下内容:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDd/mnMzHwjUzK8g3ldfsfRpJuC16mhWamaXRk8ySQrD/dzpbRLfDnZsLxCzRoq+ZzFHGwcQlJergtergdHGRrO8FE5jl3IWRRp+mP12qYw== [email protected]

如果收到错误消息 No such file or directory ,则表明您的本地计算机上没有生成 SSH 密钥对。

如果要生成新的 SSH 密钥对,请使用以下命令:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

复制上面 cat 命令的输出,然后返回到 Git 服务器控制台。

在服务器上,打开文本编辑器,然后将从本地计算机复制的公钥粘贴到 ~/.ssh/authorized_keys 文件中:

sudo nano /home/git/.ssh/authorized_keys

整个公钥文本应该在一行上。

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

如果您有一个未版本控制的项目,请导航到项目目录。如果您是从头开始的,请创建项目目录,然后浏览至该目录:

cd /path/to/local/project

初始化 git 仓库:

git init .

最后一步是将 git remote 添加到本地存储库:

git remote add origin [email protected]_server_ip:projectname.git

不要忘记 git_server_ip 用您的 Git 服务器主机名或 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 服务器并创建存储库。