作为国内主流的代码托管平台,Gitee在Linux环境下的使用体验直接影响着开发者的工作效率。与Windows图形化操作不同,Linux环境下更多依赖命令行工具,这要求开发者必须熟悉SSH密钥管理、仓库克隆、分支操作等核心技能。我在团队协作中经常遇到新成员因不熟悉Linux下的Git操作导致代码提交冲突、权限验证失败等问题,这些问题往往消耗大量排查时间。
以最常见的场景为例:当我们需要在Ubuntu服务器上部署自动化构建系统时,必须通过命令行完成代码拉取、版本切换等操作。这时如果仅掌握图形化工具的使用方法就会束手无策。更关键的是,许多持续集成工具(如Jenkins)在Linux环境下运行时,都需要通过命令行与Gitee进行交互。
在主流Linux发行版中,Git的安装非常简单。对于Debian/Ubuntu系统执行:
bash复制sudo apt update && sudo apt install -y git
而RHEL/CentOS用户则应使用:
bash复制sudo yum install -y git
安装完成后务必验证版本(要求Git 2.0+):
bash复制git --version
Gitee推荐使用SSH协议进行安全通信,配置过程需要注意以下要点:
bash复制ssh-keygen -t ed25519 -C "your_email@example.com"
密钥文件默认保存在~/.ssh/目录,其中:
将公钥内容添加到Gitee:
bash复制cat ~/.ssh/id_ed25519.pub | xclip -sel clip
然后登录Gitee网页端 -> 设置 -> SSH公钥 粘贴保存。
关键提示:如果连接测试失败,可能是权限问题导致。执行以下命令修复:
bash复制chmod 700 ~/.ssh && chmod 600 ~/.ssh/*
根据使用场景选择克隆方式:
| 方式 | 命令示例 | 适用场景 |
|---|---|---|
| HTTPS | git clone https://gitee.com/user/repo.git |
临时访问(需每次输入密码) |
| SSH | git clone git@gitee.com:user/repo.git |
日常开发(需配置SSH) |
| 镜像 | git clone --mirror git@gitee.com:user/repo.git |
完整仓库迁移 |
对于大型仓库,推荐添加--depth=1参数进行浅克隆:
bash复制git clone --depth=1 git@gitee.com:user/repo.git
创建功能分支时,建议采用以下工作流:
bash复制# 从main分支创建新分支
git checkout -b feature/xxx origin/main
# 开发完成后推送到远程
git push -u origin feature/xxx
处理合并冲突时,使用git mergetool比直接编辑更高效:
bash复制git config --global merge.tool meld
git mergetool
在.git/hooks/目录下创建post-receive脚本可实现自动部署:
bash复制#!/bin/bash
TARGET="/var/www/production"
GIT_DIR="/path/to/repo.git"
BRANCH="main"
while read oldrev newrev refname
do
if [[ $refname == "refs/heads/$BRANCH" ]]; then
echo "Deploying $BRANCH to $TARGET..."
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f
# 添加部署后操作
systemctl restart nginx
fi
done
安装git-flow扩展:
bash复制sudo apt install -y git-flow
初始化工作流:
bash复制git flow init -d
标准操作示例:
bash复制git flow feature start login-module
git flow feature finish login-module
git flow release start v1.2.0
当出现Permission denied (publickey)错误时,按以下步骤排查:
bash复制ssh-add -l
bash复制ssh -T git@gitee.com
bash复制git remote -v
当需要管理大型二进制文件时,建议使用Git-LFS:
bash复制git lfs install
bash复制git lfs track "*.psd"
bash复制git add .lfsconfig && git commit -m "Add LFS config"
清理历史大文件:
bash复制git filter-branch --tree-filter 'rm -f large_file.zip' HEAD
重新打包对象:
bash复制git reflog expire --expire=now --all
git gc --prune=now --aggressive
修改全局配置提升性能:
bash复制git config --global core.preloadindex true
git config --global core.fscache true
git config --global pack.threads 4
对于网络较慢的情况:
bash复制git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999