安装 git
# CentOS
sudo dnf install git-all
# Debian
sudo apt install git-all
# 查看版本
git --version
创建 git 用户 / 用户组
# 创建 git 用户组
groupadd git
# 创建 git 用户
useradd git
# 将用户添加到用户组
usermod -G git git
修改 git 用户权限
将 /etc/passwd
文件中的:
git:x:1000:1000::/home/git:/bin/bash
修改为:
git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell
创建 git 仓库
仓库名以 sample
为例:
# 创建仓库目录
mkdir -p /home/git/projects/sample
# 进入 repos 目录
mkdir -p /home/git/repos
cd /home/git/repos
# 创建仓库
git init --bare sample.git
# 添加 post-receive 钩子
cd sample.git/hooks
vi post-receive
# 添加以下内容
#!/bin/sh
git --work-tree=/home/git/projects/sample --git-dir=/home/git/repos/sample.git checkout -f
# 修改执行权限
chmod +x post-receive
# 修改目录所属
chown -R git:git /home/git/projects/sample
chown -R git:git /home/git/repos/sample.git
使用 GitHub Desktop Clone 仓库
-
添加本机公钥到服务器 git 用户的 authorized_keys 文件中,文件路径:
/home/git/.ssh/authorized_keys
-
运行 GitHub Desktop,选择菜单
File
->Clone Repository
->URL
输入:ssh://git@server[:port]/home/git/repos/sample.git
GitHub Desktop Clone 仓库时报错
Clone failed
Authentication failed. Some common reasons include:
可检查本机 ~/.ssh/known_hosts 文件中,是否有 server 相关的内容。
如果没有,可以在本机运行
git clone ssh://git@server[:port]/home/git/repos/sample.git
,随后 GitHub Desktop 便可识别了。
或不使用域名,直接使用 IP 进行 clone。
post-receive 钩子不生效
直接运行 /home/git/repos/sample.git/hooks/post-receive
若提示:
fatal: You are on a branch yet to be born
可能是由于默认分支名称造成的问题,例如本地提交的分支名称为 main
,
可将 /home/git/repos/sample.git/HEAD
文件内容修改为:ref: refs/heads/main
。
清理 git 仓库中需忽略,但已存在的文件
git rm -r --cached .
git add .
git commit -m "update gitignore"
忽略 git 仓库中已存在,无需提交本地更改的文件
# 忽略
git update-index --assume-unchanged [file-path]
# 取消忽略
git update-index --no-assume-unchanged [file-path]