zoukankan      html  css  js  c++  java
  • github如何实现fork的项目与原项目同步

    refer to https://www.jianshu.com/p/fede3333205f

    作者:hitchc
    链接:https://www.jianshu.com/p/fede3333205f
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    在github上,当看到好的项目代码时,有两种方式可以将代码“下载”到本地。一是可以直接clone原项目,二是通过github的“fork”功能“拷贝”项目到我们自己的主页上,再从主页上clone“拷贝项目”。

    两种方式最重要的区别是,如果我们修改了clone到本地的代码,想push一下,显然第一种方式不可行,因为项目的远程信息是别人的(通过git remote -v 可以查看),而第二种方式,由于创建者相当于是我们自己,是能够push的(当然先要add 和commit)。但是我们push之后,原项目的主人是看不到我们修改的代码的,如果想让原作者接受并merge你的修改,这时可以发起pull request,这样原作者就能收到pull request请求,并可以审阅你的代码是否合理,如果他比较满意,就可以merge你的修改,这样原项目就得到了完善,而你也就成为了光荣的“贡献者”之一。

    一般情况我们是不需要fork的。很多人错误的在使用fork,把它当成一种“收藏”功能,这其实并没有什么必要。一来,可以直接用“watching”来关注该项目,当有新的issue,commit,pull request时,你会收到相应的邮件提醒(前提是设置了邮箱)。二来fork的项目只是保留了fork当时的状态,如果项目作者在你fork之后更新了项目,你是看不到的。这就带来一个问题:如何实现fork后的项目与原项目的同步?这是我今天参与一个项目的时候才意识到的,以前没有思考过这个问题(诸位莫要见怪)。查阅了一些资料,找到了一个比较简单可行的答案。方法如下:

    我的主页上有一个项目“zhihu-api”,可以看到,它是从“lzjub567/zhihu-api”fork来的。

    我的 zhihu-api

    1. 将自己主页的项目clone到本地,如下图:

    clone 项目zhih-api

    此时,若我们查看项目的远程信息,发现结果都是关于我自己主页的,origin是分支名称:

    查看项目远程信息

    2. 为项目添加远程分支:

    添加远程分支

    其中 upstream是远程分支名,后面的链接是原作者的仓库地址,此时再重新查看项目的远程信息,发现多了upstream的信息,是刚刚添加的原作者的仓库

    查看remote 信息

    3. 如果远程项目进行了更新,我们需要从upstream分支进行拉取,这样本地的代码就和原作者的代码同步了。

    拉取远程项目信息

    4. 将本地代码提交到自己主页的分支,即origin上了,这样,我自己主页的项目就和原作者的项目进行了同步。

    push到自己的分支

    总结一下:实现fork的项目和原项目同步的方法是利用本地的项目作为“中转”,为本地的项目添加两个远程信息,拉取原仓库的新代码,push到自己的仓库上,就达到了“同步”。

    实现这个目的的做法不止这一种,只是我刚好看到了,觉得比较简单,就记录到这里备忘。

    如果您喜欢我,可以通过微信请我喝果汁。

    如果有疑问,可以留言或者发邮件给我 lhh_nj@163.com
  • 相关阅读:
    未能加载文件或程序集BUG系列
    寄语
    65. Valid Number
    56. Merge Intervals
    sublime text3 anaconda 插件报错
    42. Trapping Rain Water
    windows 下win+r无效
    93. Restore IP Addresses
    32. Longest Valid Parentheses
    48 Rotate Image
  • 原文地址:https://www.cnblogs.com/lihuanhuan/p/10612106.html
Copyright © 2011-2022 走看看