课程 / Git 基础 / 使用远程仓库

使用远程仓库

远程仓库让你可以与他人协作并备份你的代码。

添加远程仓库

# 添加远程仓库(通常称为 "origin")
git remote add origin https://github.com/user/repo.git

# 查看远程仓库
git remote -v

推送更改

将你的本地提交发送到远程:

# 推送到远程
git push origin main

# 首次推送并设置上游跟踪
git push -u origin main

# 使用 -u 后,只需使用:
git push

获取更改

下载远程更改但不合并:

git fetch origin

# 查看更改内容
git log origin/main --oneline

拉取更改

一步完成获取和合并:

git pull origin main

# 或如果已设置上游:
git pull

pull = fetch + merge

使用变基拉取

保持线性历史:

git pull --rebase origin main

跟踪分支

# 查看跟踪关系
git branch -vv

# 为当前分支设置上游
git branch -u origin/main

使用 Fork

  1. 在 GitHub 上 Fork 仓库
  2. 克隆你的 fork:
git clone https://github.com/YOUR-USERNAME/repo.git
  1. 添加上游远程:
git remote add upstream https://github.com/ORIGINAL-OWNER/repo.git
  1. 保持你的 fork 更新:
git fetch upstream
git checkout main
git merge upstream/main
git push origin main

Pull Request 工作流程

  1. 创建功能分支:
git checkout -b feature-xyz
  1. 进行更改并提交:
git add .
git commit -m "Add feature XYZ"
  1. 推送到你的 fork:
git push -u origin feature-xyz
  1. 在 GitHub 上创建 Pull Request

  2. PR 合并后,清理:

git checkout main
git pull upstream main
git branch -d feature-xyz
git push origin --delete feature-xyz

常用远程命令

# 列出远程仓库
git remote -v

# 显示远程仓库详情
git remote show origin

# 重命名远程仓库
git remote rename origin upstream

# 删除远程仓库
git remote remove origin

# 清理已删除的远程分支
git fetch --prune

处理被拒绝的推送

如果你的推送被拒绝,因为远程有新提交:

# 选项 1: 拉取并合并
git pull origin main
git push origin main

# 选项 2: 使用变基拉取(更干净)
git pull --rebase origin main
git push origin main

永远不要强制推送到共享分支!

# 仅在变基后用于自己的分支
git push --force-with-lease origin feature-branch

总结

命令描述
git remote add <name> <url>添加远程仓库
git push推送提交
git fetch下载更改
git pull获取并合并
git pull --rebase获取并变基
git remote -v列出远程仓库

恭喜!你已完成 Git 基础课程。你现在拥有日常 Git 工作流所需的所有工具。

快速参考卡片

# 日常工作流程
git status              # 检查更改内容
git add .               # 暂存所有更改
git commit -m "message" # 提交
git push                # 与团队分享

# 分支
git switch -c feature   # 新分支
git switch main         # 返回 main
git merge feature       # 合并分支

# 与远程同步
git pull                # 获取最新
git push                # 分享更改

编码愉快!