Skip to content

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 的协作功能。工作流:

  1. Fork 仓库(或有写权限则创建分支)
  2. 做变更并提交
  3. 推送到你的 fork 或分支
  4. 在 GitHub 上开拉取请求,请求维护者合并你的变更
  5. 审查——维护者审查代码、要求修改,最终合并

拉取请求是代码审查发生的地方——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 模式让你在合并前预览远程变更。

动手试一试

常见错误

错误写法

推送前忘了拉取,收到拒绝错误

正确做法

协作时始终在 git push 前运行 git pull。如果别人已推送变更,你的推送会被拒绝直到你先拉取并合并他们的工作。

错误写法

不理解 git pull 会创建合并提交就用

正确做法

git pull 会获取并合并。想看有什么新东西而不改文件,先用 git fetch。考虑 git pull --rebase 避免历史中多余的合并提交。

相关工具

相关代码片段

相关速查表

查阅不认识的术语

新手友好的术语表用大白话解释编程术语——变量、函数、DOM、Promise 等等。

查看术语表

动手做项目

通过引导式项目应用所学,含起始代码与解决方案。

查看项目

解读错误信息

用大白话解释常见错误——什么意思、为什么发生、如何修复。

查看错误