GitHub 使用命令行同步 fork 仓库

在 GitHub 上,我们可以使用 Fork 操作将其他用户的仓库复制到自己的账户下。但如果原始仓库更新了,我们可能需要将其再次 fork 到自己的账户下,以保持代码与原始仓库同步。下面将介绍如何使用 Git 命令行进行 GitHub 仓库再次 fork 的操作。

方法一

  1. 在 GitHub 上找到你之前 fork 的一个仓库,并且该原始仓库已经有更新。

  2. 打开 Git 命令行,使用 cd 命令进入你想要存储该仓库的本地目录中。

  3. 在命令行中输入以下命令,将你的 fork 仓库克隆到本地。

    1
    $ git clone <你的 fork 仓库的地址>
  4. 进入本地仓库的目录中,使用 git remote -v 命令查看远程仓库的地址,确认你当前的远程仓库是你 fork 的仓库。

  5. 为原始仓库添加一个远程地址。输入以下命令:

    1
    $ git remote add upstream <原始仓库的地址>

    其中 <原始仓库的地址> 是你想要再次 fork 的仓库的地址。如果不知道原始仓库的地址,可以在该仓库页面中点击 “Clone or download” 按钮,复制仓库地址。

  6. 使用 git remote -v 命令确认添加的远程地址是否生效。如果添加成功会有如下输出,当然我们使用 cat .git/config 命令也能查看相关配置。

    1
    2
    3
    4
    origin	<你的 fork 仓库的地址> (fetch)
    origin <你的 fork 仓库的地址> (push)
    upstream <原始仓库的地址> (fetch)
    upstream <原始仓库的地址> (push)
  7. 更新本地仓库代码,将原始仓库的更新合并到你的 fork 仓库中。输入以下命令:

    1
    2
    $ git fetch upstream
    $ git merge upstream/master

    这样,你的本地仓库就会被更新到原始仓库的最新版本。

  8. 最后,执行 git push 命令,将合并的代码推送到远端。

方法二

还有一个更加简便快捷的命令,如下(下述命令执行前请先根据方法一设置好 upstream):

1
$ git fetch upstream && git reset --hard upstream/master && git push -f

这种方法只适用于不用保存自己版本的情况。当执行上述命令时,你一定要知道你在做什么。接下来,我们来解释一下这段命令的含义。

这行命令做了以下三个操作:

  1. git fetch upstream: 这个命令从远程仓库 upstream 中拉取最新的代码到本地的 upstream/master 分支中。这样可以让你的本地仓库知道有哪些新的提交。

  2. git reset --hard upstream/master: 这个命令将你当前的分支(通常是 master 分支)回滚到 upstream/master 分支指向的提交。这意味着本地分支将与原始仓库的最新代码完全一致,并且会放弃本地所有的提交。因此,在执行这个命令之前,请确保你已经备份了本地的修改。

  3. git push -f: 这个命令将你的本地分支强制推送到远程仓库。由于你在本地分支进行了回滚操作,因此你需要强制推送以覆盖远程仓库的历史记录。这个命令应该谨慎使用,因为它会破坏其他人的提交记录。因此,如果你的本地分支和远程仓库不一致,最好先使用 git pull 尝试合并代码。

总结

使用 Git 命令行进行 GitHub 仓库再次 fork 的操作可以让我们更好地管理代码,并保持代码与原始仓库的同步。掌握 Git 命令行的基本用法可以让我们更加高效地进行开发工作。