git 开源项目 pr 问题

2018-08-16 14:23:34 +08:00
 creedowl

第一次接触到 github 的开源项目,有一些问题一直弄不清楚,来请教一下

  1. 我需要使用 github 上面的项目 A,但需要修改一部分,就 fork 了一份进行了一些修改(比如配置之类的原项目一般不会更改的内容),那么我要如何保持我 fork 的项目更新(解决冲突)?
  2. 在这之后我发现了 A 项目的一个 bug 并进行了修复,现在我想把这个修复 pr 到原项目,那么之前的改动会不会有影响,如果有要怎么解决呢?
2511 次点击
所在节点    git
9 条回复
Greenm
2018-08-16 14:54:52 +08:00
你可以单独建立一个分支,更新后合并到你自己的分支里,手动解决 conflict

bug 也是从 master 建立分支提交 PR,这样跟你自己的分支不冲突。

而且一般提交 PR 都是要求创建单独的分支,免得污染 master
creedowl
2018-08-16 14:59:09 +08:00
@Greenm #1 就是说我在我 fork 的 repo 里, 我的改动放在自己建立的分支上 B, 自己使用的就是 B, 每次从原项目更新 master, 合并到 B 上手动解决 conflict, 然后 bug 就从 master 新建另一个分支修复发 pr, 同时合并到我自己的那个分支上吗?
Greenm
2018-08-16 15:03:01 +08:00
@creedowl 对,就是这样。
creedowl
2018-08-16 15:05:40 +08:00
@Greenm #3 清楚了, 谢谢
creedowl
2018-08-16 15:33:06 +08:00
@Greenm #3 还有个小问题, 之后我只能每次更新手动解决 conflict 吗, 我修改的内容原项目一般不会变化, 有什么解决办法吗
ihainan
2018-08-16 15:45:52 +08:00
@creedowl 如果原项目不更新…为什么会有 conflict 呢,你不都是在原项目基础上做的修改吗?
Greenm
2018-08-16 15:49:34 +08:00
对呀,源项目都不怎么更新,一般都不会有 conflict 的,直接合并就好了。
creedowl
2018-08-16 16:07:19 +08:00
@ihainan #6
@Greenm #7 哦哦, 对 git 还是不太熟悉, 没理解清楚
ryd994
2018-08-16 16:48:14 +08:00
不一定 pull master
想要保持 commit log 干净的话用 rebase 更好
这是两派人的用法
因为老项目不用 GitHub,靠邮件协作,要求把改动 squash 到一个 patch 文件里。所以你最后还是要 rebase 一次

2. 修 bug 开新 branch
修完先 pr bugfix
等 merge 之后,rebase 或 pull 同步 master,再继续 pr 新 feature

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

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

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

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

© 2021 V2EX