Github进行fork后如何与原仓库同步

问题是这样的:
当我们 fork 别人的开源项目之后,如果对方发生新的提交,我们如何更新呢?

最省事的方法

  • 直接删除自己原来 fork 的项目
  • 然后重新 fork 一次,
  • 缺点
    这样做,最简单,但是有很多问题,如果你已经在原版本做了很多修改,那就不利于你下次代码合并;

使用git merge 的方法

  1. 进入当前已经 fork 的仓库目录
  2. 查看远程仓库路径
$ git remote -v
origin  https://github.com/xx.git (fetch)
origin  https://github.com/xx.git (push)

我的结果只有上述两行,那么说明还未设置 upstream (中文叫:上游代码库)。一般情况下,设置好一次 upstream 后就无需重复设置。

  1. 添加远程仓库
$ git remote  add upstream https://github.com/xx2.git

# 添加完成之后, 执行下述命令查看是否添加成功,如下所示,upstream 添加陈成功
$ git remote -v
origin  https://github.com/xx.git (fetch)
origin  https://github.com/xx.git (push)
upstream        https://github.com/xx2.git (fetch)
upstream        https://github.com/xx2.git (push)

  1. commit
    如果你之前 fork 之后,已经进行了很多修改,那么在 merge 之前,最好在本地仓库 commit 掉
# 查看当前所有修改
$ git status 

git add -A 或者 git add filename
git commit -m "modify log"
git push origin master
git status

  1. merge 关键
    如果你没有做任何修改,那么可以略过第 4 步骤。
# 更新原始仓库
$ git fetch upstream
Username for 'https://github.com/xx2.git': xxx
Password for 'https://github.com/xx2.git':
remote: Enumerating objects: 101, done.
remote: Counting objects: 100% (101/101), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 115 (delta 97), reused 100 (delta 97), pack-reused 14
Receiving objects: 100% (115/115), 52.34 KiB | 10.47 MiB/s, done.
Resolving deltas: 100% (97/97), completed with 68 local objects.
From https://github.com/xx2.git
 * [new branch]      master     -> upstream/master

  1. 切换分支
$ git checkout master
# 切换分支,确保分支在你自己的分支上,如果已经在自己的分支上,会打印如下信息
Already on 'master'
Your branch is up to date with 'origin/master'.

  1. 合并 upstream 最新到 自己的 mater
$ git merge upstream/master

# 显示合并的内容
Updating ba4fc06..a72de66
Fast-forward
 src/__init__.py                                        |   2 +-
 src/ss.py                                           |   8 ++-
 docs/dfg(2).csv                                       |  74 ++++++++++-----------
 docs/dd - Fused.csv                                   |   4 +-
 docs/dddd- Primitive.csv                               |  58 ++---------------
 include/qqq.h                                         |   7 +-       
  1. push
    第7步,将原始仓库的内容 merge 到了本地,此时你在本地执行 git log 发现于原始仓库的log 相同,但是你自己的remote仓库还未更新;
git push origin master

执行完成之后, 在网页上查看自己 fork 仓库的变化:
自己 fork 的 仓库变化, commit 数量与 最新日志与原仓库一致。

日志一直,说明push成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值