V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
zerotty
V2EX  ›  git

请教一个GitHub的问题?

  •  
  •   zerotty · 2011-11-29 22:23:01 +08:00 · 6878 次点击
    这是一个创建于 4725 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请教一下,我在GitHub上fork了别人的一个项目,并且自己做了一些改动。现在别人的那个项目有更新了,我怎么把自己fork过来的那个版本更新到最新的代码?
    12 条回复    1970-01-01 08:00:00 +08:00
    zerotty
        1
    zerotty  
    OP
       2011-11-29 22:24:45 +08:00
    我想把自己fork的那个版本更新到最新版,然后再在上面做修改。我该怎么弄啊?
    darkyoung
        2
    darkyoung  
       2011-11-29 22:25:17 +08:00
    把别人的版本做一个branch,然后merge过来
    icyflash
        3
    icyflash  
       2011-11-29 22:56:35 +08:00
    ywjno
        4
    ywjno  
       2011-11-29 23:02:05 +08:00
    用remote从远端获取最新代码,然后本地merge一下就ok了
    zhen9ao
        5
    zhen9ao  
       2011-11-29 23:04:03 +08:00
    从别人项目那里利用remote将更新pull过来,然后再利用remote将更新了的代码push到自己的库中
    benzheren
        6
    benzheren  
       2011-11-30 00:09:17 +08:00
    推荐一个适合和github一起用的好工具: http://defunkt.io/hub/
    ashchan
        7
    ashchan  
       2011-11-30 10:04:27 +08:00
    假设你fork的项目原始地址是http://github.com/abc/rep.git, 你自己的是http://github.com/you/rep.git

    $ git add remote upstream http://github.com/abc/rep.git # 你本地的origin应该跟了自己的remote,前且假设当前本地branch是master。
    $ git fetch upstream
    $ git merge upstream/master # merge可能会有冲突,手工解决掉并commit
    $ git push origin/master # push到你自己的fork上

    然后向原始项目提交一个pull request。
    ashchan
        8
    ashchan  
       2011-11-30 10:08:26 +08:00
    如果要先更新再修改提交,并假设本地已经做了修改,则第一步不变,加原始库为upstream(名字你随便取,无所谓的,只要不是origin就行)

    $ git stash # 把你的修改先暂存下来,假设没有commit过,有的话会复杂一点,就不如直接用上面的方法
    $ git pull upstream/master # 既然没有commit过,这里会直接fast forward
    $ git stash pop stash@{1} # 把暂存的修改拿回来
    $ git add . & git commit -m "commit msg"

    最后两步一样。
    ashchan
        9
    ashchan  
       2011-11-30 10:09:39 +08:00
    如果不打算向原项目提pull request,只是想不断更新他的,就一直用第一种方式。不过随着你自己的修改越来越多,起冲突的机会会越来越多。hope this helps.
    kaichen
        10
    kaichen  
       2011-11-30 15:38:26 +08:00
    赞 @ashchan 非常详细的解释

    这个问题不是Github的问题,其实是个Git的用法问题。
    zerotty
        11
    zerotty  
    OP
       2011-11-30 16:43:59 +08:00
    谢谢各位的帮忙,已经搞好了!
    riku
        12
    riku  
       2012-01-05 10:46:42 +08:00
    我觉得用 git rebase 是不是更好点?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1389 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:41 · PVG 07:41 · LAX 15:41 · JFK 18:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.