GitHub 基础
连接远程仓库、推送、拉取,以及在 GitHub 上协作。
你将学到
- 什么是远程仓库以及如何添加
- 用 git push 推送本地提交
- 用 git pull 拉取他人变更
- 用 git clone 克隆现有仓库
- 拉取请求协作基础
概念讲解
什么是远程?
远程是托管在服务器上的仓库版本——如 GitHub、GitLab 或 Bitbucket。你的本地仓库可连接一个或多个远程以同步变更。
克隆仓库时,Git 自动设置名为 origin 的远程指向源 URL。如果你在本地创建了仓库,手动添加远程:
git remote add origin https://github.com/username/repo.git
git push——推送变更
git push 把本地提交发送到远程仓库:
# 首次推送:设置追踪并推送到 origin/main
git push -u origin main
# 后续推送(追踪已设置)
git push
-u(或 --set-upstream)标志告诉 Git 记住本地 main 分支与 origin/main 的连接。首次推送后只需输入 git push。
git pull——拉取变更
git pull 从远程获取变更并合并到本地分支:
git pull
协作时推送前务必先拉取——别人可能已推送了你没有的变更。不拉取就推送,Git 会拒绝并要求先拉取。
git clone——复制仓库
git clone 下载整个仓库(含所有历史)并设置远程:
git clone https://github.com/user/repo.git
cd repo
这是开始处理已有项目的方式——例如参与开源。
SSH vs HTTPS
可用 HTTPS 或 SSH 连接 GitHub:
- HTTPS——用用户名和访问令牌。设置简单,但可能频繁要求凭据。
- SSH——用 SSH 密钥对。更安全且无需重复输密码,但需生成并上传密钥。
# HTTPS URL
git clone https://github.com/user/repo.git
# SSH URL
git clone [email protected]:user/repo.git
拉取请求(PR)
拉取请求是 GitHub 的协作功能。工作流:
- Fork 仓库(或有写权限则创建分支)
- 做变更并提交
- 推送到你的 fork 或分支
- 在 GitHub 上开拉取请求,请求维护者合并你的变更
- 审查——维护者审查代码、要求修改,最终合并
拉取请求是代码审查发生的地方——GitHub 团队协作的核心。
常用远程命令
git remote -v # 列出所有远程
git remote add origin <url> # 添加远程
git push -u origin main # 推送并设置追踪
git pull # 获取并合并远程变更
git fetch # 获取但不合并(更安全)
git clone <url> # 下载仓库示例代码
# 场景 1:把本地仓库推送到新 GitHub 仓库
# 先在 GitHub 网站创建仓库,然后:
git remote add origin https://github.com/username/my-project.git
git branch -M main # 确保分支叫 main
git push -u origin main
# 场景 2:克隆现有仓库并做变更
git clone https://github.com/username/existing-project.git
cd existing-project
# 创建功能分支
git checkout -b add-login-feature
# 做变更、提交、推送分支
echo "new feature" > login.js
git add login.js
git commit -m "feat: add login feature"
git push -u origin add-login-feature
# 现在在 GitHub 上开拉取请求
# 场景 3:与远程同步(协作)
git pull # 获取队友最新变更
# 解决冲突,然后:
git push
# 列出远程
git remote -v
# 获取但不合并(看看有什么新东西而不改文件)
git fetch
git log --oneline origin/main # 看远程有什么
三个常见工作流:把本地仓库推到 GitHub、克隆并通过分支+拉取请求贡献、与队友同步。fetch + log 模式让你在合并前预览远程变更。
动手试一试
- SSH Key Generator
生成 SSH 密钥对以安全认证 GitHub。
- CI/CD YAML Generator
生成在每次推送时运行的 GitHub Actions 流水线。
常见错误
错误写法
推送前忘了拉取,收到拒绝错误
正确做法
协作时始终在 git push 前运行 git pull。如果别人已推送变更,你的推送会被拒绝直到你先拉取并合并他们的工作。
错误写法
不理解 git pull 会创建合并提交就用
正确做法
git pull 会获取并合并。想看有什么新东西而不改文件,先用 git fetch。考虑 git pull --rebase 避免历史中多余的合并提交。
相关资源
相关工具
- .gitignore Generator
推送前生成 .gitignore 以免提交密钥。
相关代码片段
- Git Remote Snippet
高级远程管理命令。
相关速查表
- Git Cheatsheet
远程、推送、拉取和克隆命令。
查阅不认识的术语
新手友好的术语表用大白话解释编程术语——变量、函数、DOM、Promise 等等。
动手做项目
通过引导式项目应用所学,含起始代码与解决方案。
解读错误信息
用大白话解释常见错误——什么意思、为什么发生、如何修复。