Skip to content

Latest commit

 

History

History
94 lines (65 loc) · 2.48 KB

File metadata and controls

94 lines (65 loc) · 2.48 KB

第 3 课:GitHub 远端与认证

远端的基本概念

origin 只是远端地址的默认别名,不是 GitHub 的特殊关键词。

git remote -v
git remote get-url origin
git branch -vv

常用动作:

  • git fetch:下载远端新提交,但不改变当前工作目录;
  • git pull --ff-only:下载并只允许快进更新,避免意外产生合并 commit;
  • git push:上传本地 commit;
  • git clone:第一次下载整个仓库并自动设置 origin

HTTPS 认证

GitHub 不接受账号密码作为 Git push 密码。Git for Windows 通常包含 Git Credential Manager,第一次 push 会打开浏览器登录并保存凭据。

git remote set-url origin https://github.com/Abner199/git-demo.git
git push -u origin docs/update-profile

-u 建立本地分支和远端分支的跟踪关系;以后同一分支通常只需 git push

SSH 认证(可选)

生成密钥时建议设置口令。不要上传或发送私钥 id_ed25519,只把 .pub 公钥添加到 GitHub。

ssh-keygen -t ed25519 -C "你的GitHub邮箱"

~/.ssh/id_ed25519.pub 内容添加到 GitHub Settings → SSH and GPG keys → New SSH key,然后测试:

ssh -T git@github.com

成功时 GitHub 会说明认证成功但不提供 Shell,这是正常结果。切换仓库远端:

git remote set-url origin git@github.com:Abner199/git-demo.git
git remote -v

中国网络下 SSH 443 端口

如果 github.com:22 不通,可先测试 GitHub 官方提供的 SSH 443:

ssh -T -p 443 git@ssh.github.com

连接成功后,在 ~/.ssh/config 添加:

Host github.com
    HostName ssh.github.com
    Port 443
    User git

注意 443 端口主机名是 ssh.github.com。首次连接时应对照 GitHub 官方公布的主机指纹,不要盲目接受异常指纹。

fetchpull 实验

git fetch origin
git log --oneline HEAD..origin/main
git diff HEAD..origin/main

如果没有输出,表示当前 main 没有落后远端。准备更新前:

git status
git switch main
git pull --ff-only

不要在有未提交修改时直接 pull;先提交到功能分支或使用第 6 课的 stash。

安全提醒

  • 不把 Personal Access Token 写入 remote URL、脚本或截图;
  • 不提交 .env、SSH 私钥、云服务器密码;
  • 凭据泄露后立即在 GitHub 撤销,并更换实际服务密码;
  • Private 仓库也不是秘密保险箱。