跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • Online Tools
  • 用户
  • 群组
折叠
品牌标识

D2Learn Forums

  1. 主页
  2. General Discussion | 综合讨论
  3. 关于 GitHub 中的 Fork 仓库的简单问题

关于 GitHub 中的 Fork 仓库的简单问题

已定时 已固定 已锁定 已移动 General Discussion | 综合讨论
问题求助gitgithub
4 帖子 3 发布者 35 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • MoYingJiM 离线
    MoYingJiM 离线
    MoYingJi
    编写于 最后由 编辑
    #1

    想问个问题,我 fork 了一个 github 仓库,然后进行了提交,随后上游仓库也进行了自己的提交,我如何 rebase 我的提交在上游提交之后?而不是 github 默认的 merge?

    还有一个问题,我 fork 了一个 github 仓库,并对上游仓库做出了贡献(打开了 pr 且被合入),我如何优雅的同步我的 fork 以准备下一次贡献(不会常规流程就是丢弃提交后 git reset --hard origin/HEAD 吧?我所知道的应该是切一个分支出来开 pr)

    1 条回复 最后回复
    0
    • SPeakS 离线
      SPeakS 离线
      SPeak d2learn-dev
      编写于 最后由 SPeak 编辑
      #2

      mian分支 + feature分支

      • 每次改动不要直接在main上修改, 而是基于main拉出一个对应的feature分支
      • main分支只用来同步上游的代码
      • 如果在过程中 - 上游有新的改动
      • 先把上游代码同步到本地的main
      • 然后 在feature分支 rebase 到main分支
      • 功能开发完成后 就把feature分支 PR到上游
      • 在把合入上游的代码同步到本地的main
      • feature分支生命周期结束

      57a39a00-ba74-420c-8d5d-da46dcf9e85d-image.png

      1 条回复 最后回复
      1
      • MoYingJiM 离线
        MoYingJiM 离线
        MoYingJi
        编写于 最后由 编辑
        #3

        好的,谢谢
        如果是第一个问题呢,第一个问题的提出 就是因为 在某个项目中 我要维护一个自己的分支(而不向上游做贡献),而且我的改动几乎仅限于增加了一个单独的文件(即几乎永远不与上游冲突),在这种情况下 同步上游时 如何使用 rebase 而不是 github 默认的 merge 来同步上游,使提交记录变得干净简洁

        1 条回复 最后回复
        0
        • johanvxJ 离线
          johanvxJ 离线
          johanvx
          编写于 最后由 johanvx 编辑
          #4

          为方便描述,称上游 GitHub 仓库为 upstream,自己 fork 的 GitHub 仓库为 origin。如果没有理解错的话,你应该是遇到下面这个场景并想做到 Step 4:

          = Step 1: Fork
          
          * aaaaaa (HEAD -> main, origin/main, upstream/main)
          ...
          
          = Step 2: Make local changes and push them to origin
          
          * bbbbbb (HEAD -> main, origin/main)
          * aaaaaa (upstream/main)
          ...
          
          = Step 3: Check (fetch) upstream's update
          
          * bbbbbb (HEAD -> main, origin/main)
          | * cccccc (upstream/main)
          |/
          * aaaaaa
          ...
          
          = Step 4: Rebase (but how?)
          
          * bbbbbb (HEAD -> main, origin/main)
          * cccccc (upstream/main)
          * aaaaaa
          ...
          

          如果是这样的话,我通常的做法是在本地进行这样的操作:

          git pull -r upstream main
          # Resolve conflict
          git rebase --continue
          

          至于 GitHub 有没有一键(或者几键)的做法,我没有找到。

          参考阅读:https://gitolite.com/git-pull--rebase

          1 条回复 最后回复
          2

          • 登录

          • 没有帐号? 注册

          • 登录或注册以进行搜索。
          d2learn forums Powered by NodeBB
          • 第一个帖子
            最后一个帖子
          0
          • 版块
          • 最新
          • 标签
          • 热门
          • Online Tools
          • 用户
          • 群组