跳转到内容

1.4 远程仓库的使用


远程仓库是项目的网络托管版本。它们是协作和备份的基础。当您使用 git clone 时,Git 会自动为您设置一个名为 origin 的默认远程仓库。

使用 git remote -v 命令可以列出您配置的所有远程仓库的短名称及其 URL。

Terminal window
git remote -v

输出示例

Terminal window
origin https://github.com/user/repo.git (fetch)
origin https://github.com/user/repo.git (push)

如果您需要连接到一个新的远程仓库,可以使用 git remote add 命令。这在项目有多个托管地或需要连接到团队成员的 Fork 时非常有用。

Terminal window
git remote add [shortname] [url]
# 示例:添加原始上游仓库
git remote add upstream https://github.com/original-author/repo.git

如果您想更改已配置远程仓库的短名称(例如,将默认的 origin 改为更具描述性的名称),可以使用git remote rename

Terminal window
git remote rename origin my-main-repo

注意

重命名远程仓库不会影响远程服务器上的内容,它只更改您本地配置中用于引用该仓库的名称。

推送是将本地仓库中已提交的更改上传到远程仓库的操作。这是共享工作成果的主要方式。

当第一次将本地分支推送到远程时,需要使用 -u--set-upstream 标志来设置跟踪关系,以便后续可以直接使用 git push

Terminal window
git push -u origin <branch-name>
# 示例:首次推送 main 分支
git push -u origin main

一旦设置了跟踪关系,之后只需使用简洁的命令即可。

Terminal window
git push

⚠️ 推送失败?

如果远程仓库在您上次拉取后有新的提交,您的推送可能会被拒绝。此时,您必须先执行git pullgit fetch/merge合并远程的更改。

📥 拉取和抓取更改 (Pulling & Fetching)

Section titled “📥 拉取和抓取更改 (Pulling & Fetching)”

要获取其他人在远程仓库中的最新工作成果,您可以使用 git fetchgit pull 命令。理解它们的区别对于管理本地分支至关重要。

git fetch 会从远程仓库下载所有新的数据和分支信息,但不会自动合并到您的本地工作目录或本地分支中。

Terminal window
git fetch origin

用途

抓取允许您在不更改当前工作区代码的情况下,查看远程有哪些更新。您可以随后手动检查并决定何时、如何合并这些更改。

git pull 是一个组合命令,它相当于执行了 git fetch,然后自动执行了 git mergegit rebase。它会下载远程数据并尝试将其合并到您当前所在的分支中。

这是默认行为。Git 会创建一个新的合并提交来记录远程和本地分支的汇合点:

Terminal window
git pull origin <branch-name>
# 等同于:git fetch origin && git merge origin/<branch-name>

如果某个远程仓库不再使用,可以使用 git remote rm 命令将其从您本地的 Git 配置中移除。这只会删除本地对该远程仓库的引用,不会影响远程服务器上的仓库。

Terminal window
git remote rm <shortname>
# 示例:移除名为 'upstream' 的远程仓库引用
git remote rm upstream

如果您不再需要某个远程分支,可以使用 git push 命令的 --delete 选项将其删除。

Terminal window
git push origin --delete <branch-name>
# 示例:删除远程分支 'feature-branch'
git push origin --delete feature-branch

简写形式 远程分支删除也可以使用推送一个空分支的简写形式(不太直观,但常用):

Terminal window
git push origin :<branch-name>
# 示例:
git push origin :feature/login

Powered by Namyki