git在linux上需按发行版选对包名并配置源:ubuntu/debian启universe,centos/rhel 7+装epel,8+/fedora直接dnf;配用户信息前先git config --list --show-origin查覆盖源;init后立即设.gitignore和git config --global init.defaultbranch main;ssh密钥须加ssh-agent并持久化;禁用http url以支持自动化。

Git 在 Linux 上不是“安装”,而是“选对包名再装”
多数人卡在第一步:用 apt install git 或 yum install git 报错找不到包,或装出来是极老版本(比如 1.8)。根本原因不是命令错了,是发行版默认源里 Git 版本太旧,或包名不统一。
- Ubuntu/Debian 系:确保启用
universe仓库(/etc/apt/sources.list中含universe),再运行sudo apt update && sudo apt install git - CentOS/RHEL 7+:默认
base源里 Git 是 1.8.x,必须启用epel(sudo yum install epel-release),再yum install git - CentOS/RHEL 8+ 或 Fedora:直接
dnf install git即可,版本较新 - 想装最新稳定版(如 2.40+)?别碰系统包管理器,用官方源码编译或第三方仓库(如 GitHub Releases 提供的
git-2.45.0.tar.xz)
配置用户信息前先确认 git config --list --show-origin
很多人配完 git config --global user.name "xxx" 还是提交显示 unknown,是因为配置被更高优先级的配置覆盖了——比如项目目录下有 .git/config,或系统级 /etc/gitconfig 里设了空值。
- 运行
git config --list --show-origin能清楚看到每条配置来自哪个文件、哪一行 - 全局配置写进
~/.gitconfig,但若当前仓库的.git/config里也有user.name,它会生效,全局配置被忽略 - 邮箱必须真实可用(尤其对接 GitHub/GitLab),否则 push 可能被拒绝,或提交不关联账号
- 避免用
git config --system(需 root),容易污染所有用户环境
git init 后立刻设好 .gitignore 和默认分支名
新建仓库时漏掉这两步,后期补救成本高:大量已提交的临时文件要清理,分支名不一致还会导致 CI/CD 工具报错或协作混乱。
- 初始化后马上创建
.gitignore,至少包含:*.log、__pycache__/、node_modules/(按语言补)、.env - Git 2.28+ 默认分支名是
main,但旧版仍是master。统一做法:执行git config --global init.defaultBranch main,以后所有git init都用main - 如果已建库且是
master,改名命令是:git branch -M main,再git push -u origin main,别忘了通知协作者
SSH 密钥没加进 ssh-agent,git clone 就会卡住或报 Permission denied (publickey)
生成密钥只是第一步,Linux 下 SSH 客户端默认不自动加载 key,尤其用桌面环境(GNOME/KDE)时,ssh-agent 可能没启动或没记住密码。
- 检查是否运行:
eval "$(ssh-agent -s)",再ssh-add ~/.ssh/id_rsa(路径按实际密钥名调整) - 把这两行加到
~/.bashrc或~/.zshrc,否则每次新开终端都要重加 - 测试是否通:
ssh -T git@github.com(GitHub)或ssh -T git@gitlab.com(GitLab),成功返回欢迎语才算到位 - 别用
http(s)://URL 替代——虽然不用配 SSH,但每次 push 都要输密码,且无法用 deploy key 做自动化
--show-origin,就可能花半小时查为什么提交者不对。










