git在linux上需装对版本、配对ssh密钥并避开配置覆盖陷阱才能正常使用;须按发行版选择安装命令,用git config --list --show-origin查配置来源,启动ssh-agent并持久化密钥。

Git 在 Linux 上不是“装上就能用”,而是“装对版本 + 配对位置 + 避开覆盖陷阱”才能正常提交、推送、SSH 克隆。系统包管理器装出来的 Git 往往太旧(比如 CentOS 7 自带 git version 1.8.3),或配置被项目级/系统级文件静默覆盖,导致 git config --global 设了却无效。
不同发行版该用哪个命令装 Git
别直接抄 sudo apt install git 就跑,先确认你的发行版和源状态:
- Ubuntu/Debian:确保
/etc/apt/sources.list含universe仓库,否则apt install git可能失败或降级安装;运行sudo apt update && sudo apt install git - CentOS/RHEL 7:默认源只有
git-1.8.3,必须先启用 EPEL:sudo yum install epel-release && sudo yum install git - CentOS/RHEL 8+ / Fedora:
sudo dnf install git即可,版本通常 ≥2.30 - 想用最新稳定版(如 2.45+):放弃包管理器,用源码编译——
curl -O https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.45.0.tar.gz,解压后make configure && ./configure --prefix=/usr && make && sudo make install
配置 user.name 和 user.email 为什么经常不生效
根本原因不是命令写错,是 Git 配置有三级优先级(系统 > 全局 > 本地),低优先级会被高优先级覆盖。比如你在项目目录下执行过 git config user.name "",那这个空值就会压过 ~/.gitconfig 里的设置。
- 查清楚配置来源:运行
git config --list --show-origin,它会逐行显示每条配置来自哪个文件(如file:/home/user/.gitconfig或file:.git/config) - 邮箱必须真实且与 GitHub/GitLab 账户一致,否则 push 会被拒绝,或提交不关联个人主页
- 避免用
git config --system(需 root),它写入/etc/gitconfig,会影响所有用户,极易引发协作冲突
git init 后立刻要做的两件事
很多人 init 完就 add/commit,结果发现 node_modules/ 被提交、CI 报 master 分支名不匹配——都是初始化后没做这两步:
- 马上创建
.gitignore,至少包含:__pycache__/、*.log、.env、node_modules/(按语言补) - 设默认分支名:
git config --global init.defaultBranch main;若已建库是master,改名用git branch -M main,再git push -u origin main
SSH 密钥生成后 clone 还报 Permission denied (publickey)
生成密钥只是第一步,Linux 下 SSH 客户端默认不自动加载私钥,尤其桌面环境常漏掉 ssh-agent 注册环节。
- 检查是否已有密钥:
ls -al ~/.ssh/id_ed25519*(推荐 ed25519,比 rsa 更快更安全) - 启动并注册密钥:
eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_ed25519 - 加持久化(避免每次重启重输):把
eval "$(ssh-agent -s)"和ssh-add ~/.ssh/id_ed25519加进~/.bashrc或~/.zshrc - 测试连通性:
ssh -T git@github.com,看到 Hi xxx! 才算真正通了
最容易被忽略的是配置覆盖链和 SSH agent 持久化——前者让 git config 像在打空气,后者让 git clone 卡在认证环节。动手前先 --show-origin,动手后立刻 ssh-add,基本就稳了。











