• Github Fork 之后与源仓库保持同步


    当我们想在 Github 上的某个开源仓库中贡献自己的代码时,通常会先 Fork 这个开源代码仓库,然后clone到本地,提交自己的修改,最后 Pull Request 进行合并。

    由于开源仓库通常会有很多人一起贡献代码,要持续与这些项目贡献者保持协作,我们就会遇到一个很常见的问题:如何与源仓库保持同步?

    参考以下步骤即可与 Fork 的源仓库保持同步。

    配置远程仓库
    先查看当前配置的远程仓库,YOUR_USERNAME为你的 Github 用户名,YOUR_FORK为 Fork 的仓库名。

    $ git remote -v
    > origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
    > origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

    配置需要同步的上游仓库(即Fork的源仓库),ORIGINAL_OWNER为源仓库作者用户名,ORIGINAL_REPOSITORY为源仓库名。

    $ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

    验证配置,upstream开头的即是远程仓库

    $ git remote -v
    > origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
    > origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
    > upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
    > upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

    同步Fork分支
    从上游仓库获取分支及其各自的提交。对BRANCHNAME的提交将存储在本地分支upstream/BRANCHNAME中。

    $ git fetch upstream
    > remote: Counting objects: 75, done.
    > remote: Compressing objects: 100% (53/53), done.
    > remote: Total 62 (delta 27), reused 44 (delta 9)
    > Unpacking objects: 100% (62/62), done.
    > From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
    > * [new branch] main -> upstream/main

    切换本地默认分支,本例中即main分支。

    $ git checkout main
    > Switched to branch 'main'

    将上游默认分支 - 本例中为 upstream/main - 的更改合并到本地默认分支。

    $ git merge upstream/main
    > Updating a422352..5fdff0f
    > Fast-forward
    > README | 9 -------
    > README.md | 7 ++++++
    > 2 files changed, 7 insertions(+), 9 deletions(-)
    > delete mode 100644 README
    > create mode 100644 README.md

    这个操作会使本地的默认分支与上游仓库同步,而不会丢失本地更改。

    如果你本地没有任何单独的提交,Git会直接进行"fast-forward"操作:

    $ git merge upstream/main
    > Updating 34e91da..16c56ad
    > Fast-forward
    > README.md | 5 +++--
    > 1 file changed, 3 insertions(+), 2 deletions(-)

    推送同步
    上述步骤仅仅同步了仓库的本地副本。要在 GitHub 上同步更新,还需要将本地更改推送到 Github 在线仓库:

    git push origin main

    有时,推送本地副本到在线仓库会遇到如下错误:

    $ git push origin main
    To https://github.com/YOUR_USERNAME/YOUR_FORK.git
    ! [rejected] main -> main (fetch first)
    error: 推送一些引用到 'https://github.com/YOUR_USERNAME/YOUR_FORK.git' 失败
    提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
    提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
    提示:(如 'git pull ...')。
    提示:详见 'git push --help' 中的 'Note about fast-forwards' 小节。

    这说明你的远程仓库有本地副本中不包含的提交,只需要执行如下操作即可:

    $ git pull origin main
    ————————————————
    版权声明:本文为CSDN博主「_9247_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/m0_55236025/article/details/114108855

  • 相关阅读:
    HDU2206:IP的计算
    HDU 2054 A == B ?A
    怎样确定循环节
    Python和Java编程题(二)
    Python和Java编程题(一)
    Java中的静态变量、静态方法问题
    快速排序的Java和python实现,亲测实际可用
    Java和Python分别实现直接选择排序
    Python和Java分别实现冒泡排序
    JavaScript(第十六天)【BOM基础】
  • 原文地址:https://www.cnblogs.com/mouseleo/p/14483785.html
Copyright © 2020-2023  润新知