【学习】Git 极简使用笔记(别名封装+GitBlit+Gitea 完整部署)
一、Git 别名封装:一键等效 SVN 操作
日常开发习惯 SVN 操作逻辑,可通过 Git 全局别名封装命令,无需记忆复杂原生 Git 指令,打开Git Bash 直接执行以下配置命令即可。
1.1 别名配置代码
等效 svn update:一键拉取远端最新代码
git config --global alias.up "pull"
创建使用代理的 clone, pull 别名 aclone, apull
git config --global alias.aclone "clone -c http.proxy=socks5://127.0.0.1:10808 -c https.proxy=socks5://127.0.0.1:10808"
git config --global alias.apull "pull -c http.proxy=socks5://127.0.0.1:10808 -c https.proxy=socks5://127.0.0.1:10808"
# 删除别名
git config --global --unset alias.aclone
等效 svn commit + push:一键【添加文件-提交-推送】,支持自定义提交备注
无备注则自动生成带时间戳的默认提交信息
git config --global alias.push '!f() {
if [ -z "$1" ]; then
msg="auto push - $(date +"%Y-%m-%d %H:%M:%S")";
else
msg="$1";
fi;
git add . && git commit -m "$msg" && git push;
}; f'
1.2 日常极简用法
封装别名命令
对应SVN操作
说明
git up
svn update
拉取远端仓库最新代码到本地
git push "修复了bug"
svn commit
自定义提交备注,一键提交并推送
git push
svn commit
无参数,自动生成时间戳备注提交推送
1.3 免账号密码配置
避免每次拉取/推送代码重复输入用户名密码,执行全局凭证存储命令:
git config --global credential.helper store
二、前置环境:安装 JDK8
GitBlit 服务运行依赖 Java 环境,需提前安装 JDK8,官方下载地址:
https://www.oracle.com/java/technologies/downloads/#java8-windows
补充说明:该页面为 Oracle 官方 Java 下载页,提供 JDK8/11/17/21/25/26 全版本安装包,Windows/Linux/Mac 全平台适配,生产环境新版 JDK(21/25/26)可免费商用,JDK8/11/17 新版更新商用需订阅授权。
三、服务端部署 GitBlit(Windows)
链接异常提示:GitBlit 官方地址http://gitblit.github.io/gitblit/ 当前网页解析失败,无法正常访问下载,可更换第三方镜像获取安装包。
3.1 下载安装包
访问官网下载最新版 GitBlit(官网解析失败,建议寻找镜像站下载)
3.2 修改核心配置文件 data\defaults.properties
代码仓库本地存储路径
git.repositoriesFolder = C:\svn\GitRepository
HTTPS访问端口
server.httpsPort = 8821
允许所有IP访问服务
server.httpBindInterface = 0.0.0.0
注释证书域名配置(自签名证书无需配置)
// server.certificateAlias = office.belltrip.net
SSH协议访问端口
git.sshPort = 8822
3.3 修改服务安装脚本 installService.cmd
设置系统架构
SET ARCH=amd64
设置GitBlit安装根目录
SET CD=D:\tools\gitblit-1.9.1
清空默认启动参数
--StartParams="" ^
3.4 安装并启动系统服务
1. 以管理员身份运行 installService.cmd,注册Windows系统服务
2. 打开系统服务面板,找到 GitBlit 服务,手动启动即可
四、Windows Git 客户端连接 GitBlit 踩坑解决方案
4.1 克隆仓库基础命令
git clone ssh://admin@office.belltrip.net:8822/jingqiu.git
4.2 常见报错及修复方案
报错1:SSL certificate problem: self signed certificate in certificate chain
自签名证书不受信任,关闭全局SSL证书校验:
git config --global http.sslVerify false
报错2:no matching host key type found. Their offer: ssh-rsa
新版SSH客户端默认禁用ssh-rsa算法,两种修复方式:
1. 临时交互授信:直接执行SSH命令,手动确认信任主机
2. 永久配置算法兼容:在 C:\Users\用户名.ssh\ 目录新建 config 文件,写入以下内容
Host office.belltrip.net
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
五、Git 高频实用命令
5.1 恢复本地误删除文件
git reset --hard HEAD
5.2 更新.gitignore忽略规则(忽略已追踪文件)
清除本地缓存
git rm -r --cached .
重新添加所有文件
git add .
提交忽略规则变更
git commit -am "Remove ignored files"
拉取远端代码并推送
git pull origin master
git push origin master
5.3 查看全部Git全局配置
git config -l
5.4 分支基础操作
git checkout -b branch # 创建
git checkout branch # 切换到指定分支
git merge master # 将master主分支代码合并到当前分支 并切换到新分支
5.5 合并代码忽略指定文件(冲突自动取舍)
1. 项目根目录新建 .gitattributes 文件,配置文件合并规则,支持通配符
2. 规则说明:merge=ours 冲突时保留本地代码;merge=theirs 冲突时保留远端代码
3. 开启全局合并驱动支持
开启ours合并驱动
git config --global merge.ours.driver true
六、Linux 服务端部署 Gitea 1.26.1
链接异常提示:Gitea 二进制包直链 https://dl.gitea.com/gitea/1.26.1-linux-amd64 当前无法直接访问下载,可前往Gitea官方发布页选择对应版本包。
环境要求:系统 Git 版本 ≥ 2.0
6.1 下载并赋予执行权限
wget -O gitea https://dl.gitea.com/gitea/1.26.1/gitea-1.26.1-linux-amd64
chmod +x gitea
6.2 创建专用运行用户与目录授权
创建git系统用户
adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git
创建Gitea数据、日志、自定义目录
mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
创建配置文件目录并授权
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea
二次修正目录权限
sudo chown -R git:git /etc/gitea
sudo chown -R git:git /var/lib/gitea
配置Gitea工作目录环境变量
export GITEA_WORK_DIR=/var/lib/gitea/
移动二进制文件到系统全局命令目录
cp gitea /usr/local/bin/gitea
6.3 编写系统服务文件 systemd
编辑服务文件:vim /etc/systemd/system/gitea.service
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target mysql.service mariadb.service
Wants=mysql.service mariadb.service
[Service]
Type=simple
User=git
WorkingDirectory=/var/lib/gitea
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
RestartSec=5s
Environment=USER=root HOME=/var/lib/gitea GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target
6.4 启动与管理 Gitea 服务
重载systemd配置
systemctl daemon-reload
启动gitea服务
sudo systemctl start gitea
查看服务运行状态
sudo systemctl status gitea
查看服务最近20条日志
journalctl -u gitea.service -n 20 --no-pager
6.5 命令行创建管理员账号
sudo -u git gitea admin user create --config /etc/gitea/app.ini --username xiong --password cexotxgt_4321 --email xiongmin@gmail.com --admin
6.6 Nginx反向代理
配置Nginx反向代理,将域名转发至本地 127.0.0.1:3002,即可通过域名访问网页端
6.7 Gitea 完整配置文件 /etc/gitea/app.ini
APP_NAME = Gitea: Git with a cup of tea
RUN_MODE = prod
RUN_USER = root
WORK_PATH = /var/lib/gitea
[repository]
ROOT = /var/lib/gitea/data/gitea-repositories
[repository.local]
LOCAL_COPY_PATH = /tmp/gitea/local-repo
[repository.upload]
TEMP_PATH = /var/lib/gitea/data/tmp/uploads
[server]
APP_DATA_PATH = /var/lib/gitea/data
DOMAIN = YOUR_DOMAIN
HTTP_PORT = 3002
HTTP_ADDR = 127.0.0.1
PROTOCOL = http
SSH_DOMAIN = YOUR_DOMAIN
SSH_PORT = 2222
SSH_LISTEN_PORT = 2222
DISABLE_SSH = false
START_SSH_SERVER = true
OFFLINE_MODE = false
[database]
DB_TYPE = mysql
HOST = 127.0.0.1:3306
NAME = giteadb
USER = gitea
PASSWD = YOUR_PASSWORD
SSL_MODE = disable
CHARSET = utf8mb4
[session]
PROVIDER = file
[picture]
DISABLE_GRAVATAR = false
ENABLE_FEDERATED_AVATAR = true
[security]
INSTALL_LOCK = true
SECRET_KEY = CreateAUniqueSecretKeyHere
INTERNAL_TOKEN = CreateAUniqueInternalTokenHere
ONLY_ALLOW_SECURITY_KIND_CYPHER = false
DISABLE_RUN_WITH_CUSTOM_USER = true
[service]
禁用公开注册
DISABLE_REGISTRATION = true
陌生人必须登录才能查看公开仓库
REQUIRE_SIGNIN_VIEW = true
关闭验证码
ENABLE_CAPTCHA = false
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.localhost
[openid]
ENABLE_OPENID_SIGNIN = false
ENABLE_OPENID_SIGNUP = false
[oauth2]
JWT_SECRET = YOUR_SECRET
配置必填提醒:部署前务必修改app.ini 中占位参数:域名、数据库密码、SECRET_KEY、INTERNAL_TOKEN、JWT_SECRET,否则服务无法正常运行。