请教一个GitHub的问题?

2011-11-29 22:23:01 +08:00
 zerotty
请教一下,我在GitHub上fork了别人的一个项目,并且自己做了一些改动。现在别人的那个项目有更新了,我怎么把自己fork过来的那个版本更新到最新的代码?
6715 次点击
所在节点    git
12 条回复
zerotty
2011-11-29 22:24:45 +08:00
我想把自己fork的那个版本更新到最新版,然后再在上面做修改。我该怎么弄啊?
darkyoung
2011-11-29 22:25:17 +08:00
把别人的版本做一个branch,然后merge过来
icyflash
2011-11-29 22:56:35 +08:00
ywjno
2011-11-29 23:02:05 +08:00
用remote从远端获取最新代码,然后本地merge一下就ok了
zhen9ao
2011-11-29 23:04:03 +08:00
从别人项目那里利用remote将更新pull过来,然后再利用remote将更新了的代码push到自己的库中
benzheren
2011-11-30 00:09:17 +08:00
推荐一个适合和github一起用的好工具: http://defunkt.io/hub/
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
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
2011-11-30 10:09:39 +08:00
如果不打算向原项目提pull request,只是想不断更新他的,就一直用第一种方式。不过随着你自己的修改越来越多,起冲突的机会会越来越多。hope this helps.
kaichen
2011-11-30 15:38:26 +08:00
赞 @ashchan 非常详细的解释

这个问题不是Github的问题,其实是个Git的用法问题。
zerotty
2011-11-30 16:43:59 +08:00
谢谢各位的帮忙,已经搞好了!
riku
2012-01-05 10:46:42 +08:00
我觉得用 git rebase 是不是更好点?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/22452

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX