linux装git连github/gitlab关键三步:装对版本(如ubuntu 22.04+用sudo apt install git,确保git --version≥2.30.2)、配对全局用户信息(git config --global user.name/email,邮箱须与平台一致)、ssh密钥类型与公钥内容必须匹配平台要求(github推荐ed25519,整行复制公钥,测试ssh -t git@github.com成功后,url需用git@而非https://)。

Linux上装Git并连上GitHub或GitLab,不是“装完就能用”,关键在三步:装对版本、配对用户信息、SSH密钥必须和远端平台一致。低于git 2.30可能在git push时遇到fatal: invalid refspec 'main'这类分支名兼容问题,尤其新仓库默认主干是main而非master。
确认系统包管理器再执行安装命令
Debian/Ubuntu系用apt,RHEL/CentOS/Fedora用yum或dnf,混用会报错。别直接抄“sudo apt install git”就跑——先确认你当前系统:
-
cat /etc/os-release | grep -E "(NAME|VERSION)"看发行版和版本号 - Ubuntu 22.04+ 或 Debian 12+:用
sudo apt update && sudo apt install git - CentOS 7/8 或 RHEL 8+:用
sudo dnf install git(RHEL 8+)或sudo yum install git(CentOS 7) - 装完立刻验证:
git --version,输出应 ≥2.30.2
配置user.name和user.email必须全局且唯一
这组信息会硬编码进每次git commit的元数据里,GitHub/GitLab靠它关联提交者头像、贡献图、权限判断。设错会导致提交显示为“ghost user”或无法计入个人贡献统计。
- 必须用
git config --global user.name "Your Name"和git config --global user.email "your@github.com"(邮箱要和GitHub/GitLab账号一致) - 不要漏掉
--global;只在项目里设user.email会导致跨项目提交身份混乱 - 查是否生效:
git config user.email(返回值应是你填的邮箱),git config --list | grep user看全局是否覆盖了项目级 - 如果已提交过错误邮箱,得用
git commit --amend --author="Correct Name <correct>"</correct>修正最近一次,历史提交需filter-branch重写(慎用)
SSH密钥必须匹配平台类型且公钥内容完整粘贴
GitHub用ed25519密钥最稳,GitLab旧版可能不支持;但无论哪家,公钥内容复制时多一个空格、少一个=、开头多了ssh-ed25519字段都会导致ssh -T git@github.com失败并提示Permission denied (publickey)。
- 生成密钥优先选:
ssh-keygen -t ed25519 -C "your@email.com"(GitHub推荐);若GitLab服务器较老,改用-t rsa -b 4096 - 私钥路径默认
~/.ssh/id_ed25519,公钥是~/.ssh/id_ed25519.pub;用cat ~/.ssh/id_ed25519.pub查看,**整行复制,不删头尾、不换行、不加引号** - GitHub:Settings → SSH and GPG keys → New SSH key → Title随便写,Key type选“Authentication Key”,粘贴公钥 → Add SSH key
- GitLab:Preferences → SSH Keys → 粘贴公钥 → Add key
- 测试连通:
ssh -T git@github.com或ssh -T git@gitlab.com;成功返回类似Hi username! You've successfully authenticated...
克隆或推送时URL协议必须和SSH密钥配套
用https://地址克隆,即使配了SSH密钥也白搭;反过来,用git@github.com:user/repo.git却没配SSH,就会卡在密码输入或直接拒绝。
- 检查远程地址:
git remote get-url origin - 如果是
https://开头,换成SSH:git remote set-url origin git@github.com:user/repo.git - 首次推送必须带
-u:git push -u origin main(注意分支名是main,不是master) - 如果
git pull报refusing to merge unrelated histories,说明本地和远端无共同祖先,加--allow-unrelated-histories临时解决,但更可能是初始化流程错了
最容易被忽略的是:GitLab自建实例的SSH端口常非默认22,比如改成2222,这时URL得写成ssh://git@your-gitlab-domain.com:2222/user/repo.git,否则ssh -T能通,git push仍失败。











