GitHub 远程仓库与协作流程
本文目录
远程仓库是本地仓库保存的一组别名和 URL,不是工作区文件夹。先确认当前目录、分支和改动,再检查远程信息;origin 只是常见别名,不是必须的特殊名字。
1. 查看与管理 remote
git status --short --branch
git remote -v
git remote get-url origin
git remote remove origin 只删除本地配置中的 remote 别名,不会删除 GitHub 上的仓库,但会移除该别名的 fetch/push 地址。遇到 remote origin already exists 不要先删除;先检查 URL,再按意图使用 git remote set-url origin <正确地址>,或保留原 remote 并添加另一个名字:
git remote set-url origin https://github.com/OWNER/REPO.git
git remote add upstream https://github.com/ORIGINAL/REPO.git
git remote -v
在分享 git remote -v 输出前确认 URL 不含 token、用户名或私有主机信息。公开仓库可直接 clone;克隆后远程通常叫 origin。Fork 工作流可把自己的 fork 作为 origin,把原始仓库加为 upstream。
2. 使用安全认证
GitHub 命令行支持 SSH 和 HTTPS。HTTPS 密码认证已不再用于 Git 操作:可用 GitHub CLI gh auth login 或 Git Credential Manager 完成浏览器认证;若被提示输入密码,应输入受支持的 token,而不是账户密码。不要把 token 写进 remote URL、shell 历史、脚本或截图。
SSH 是另一种选择。按当前平台和 GitHub 官方说明生成并添加密钥;优先使用现代 Ed25519 key(目标环境不支持时再按官方兼容建议选型):
ssh-keygen -t ed25519 -C "you@example.com"
ssh -T git@github.com
私钥始终留在本机受保护的密钥链/agent 中,只上传公钥。首次连接核对官方 host fingerprint 提示;不要因连接问题关闭 StrictHostKeyChecking。公司或组织仓库还需遵循组织 SSO、最小权限和密钥轮换规则。
3. 创建并推送当前分支
git switch -c feat/describe-change
git status --short --branch
git add path/to/reviewed-file
git diff --cached
git commit -m "feat: describe the change"
git push --set-upstream origin feat/describe-change
如果分支已存在,先用 git branch --show-current 确认,不要重复创建。远端默认分支不保证叫 main 或 master;以仓库页面、git remote show origin 或团队说明为准。第一次推送 feature 分支时设置 upstream,后续可在确认当前分支和 upstream 后用简写 push/pull。
4. 拉取更新与提交 PR
git fetch origin --prune
git branch -vv
git log --oneline --graph --decorate --all -20
git diff origin/<base-branch>...HEAD
fetch 只更新远端跟踪信息,不自动改动当前文件;检查差异后,再按团队习惯使用 merge 或 rebase 更新分支。不要在有未提交改动时盲目 pull;先保存、提交或使用经过确认的 stash。完成后推送 feature 分支并通过 GitHub Pull Request 进行 review、CI 和合并,不要直接推送受保护主分支。
5. 多个远程与错误恢复
一个本地仓库可以有多个 remote,例如个人 fork 的 origin 与上游的 upstream。先查看 fetch/push URL 与分支跟踪关系,再明确指定目标:
git remote -v
git branch -vv
git fetch upstream
git push origin <feature-branch>
推送被拒绝时先 fetch 并看提交图/冲突原因。不要直接 --force 或强制更新分支;已共享分支要与协作者协调,通常用新提交解决冲突。只有你拥有该分支、已检查远端新提交且团队明确允许改写历史时,才讨论 --force-with-lease;它仍会改写远端历史,不是通用保险。
凭据疑似泄露时立即在托管平台撤销/轮换,检查仓库与 CI 日志,再清理误提交的凭据;单纯删除文件不会从 Git 历史和其他克隆中消除秘密。
官方参考
Live Notes
留言提交后会先进入审核,审核通过后对其他读者公开。