Git工作流在远程存储库上进行自定义

时间:2012-02-10 08:08:30

标签: git workflow

我仍然不清楚:

我想从opensource项目中获取代码并做出贡献。但是我也希望进行私人更改,可以使用公开有用的代码部分,并在本地存储库中进行私密更改。

我想,方式将是:

  • 克隆远程存储库
  • 为远程版本的代码“project”创建分支
  • 创建本地分支“海关”,我的自定义将在
  • “master”将是我完成的自定义

然后可以从我的分支“海关”中删除原始代码的某些部分,巫婆将不会再次从“项目”自动同步,但我仍然可以为原始项目做贡献?我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

  • 克隆存储库。
  • 主分支应始终与原始主分支完全相同。 (即使Git仍然可以通过使用“origin / master”作为分支名称来访问原始主分支,如果你需要它,我仍然会建议保留一个本地分支。但这是一个品味问题。)
  • 为您的自定义创建分支;在这里你可以根据自己内心的需要修改一切,删除内容,更改内容等等。除非您告诉Git,否则此处的更改不会被原始存储库中的更改所触及。如果您愿意,可以将此分支推送到公共存储库 - 如果您不希望任何人看到它,那也没关系。
  • 为您的公开修改创建一个或多个分支。应将这些分支推送回公共存储库,以便原始项目可以从您的修改中受益,如果他们愿意的话。如果他们这样做,您的分支将最终合并到master
  • 现在,最后,为本地构建创建一个分支,其中包含原始master分支以及两个已修改的分支。我建议不要连接到这个分支,而是每次修改其他分支时重新创建它。这将保证此分支(和您的本地构建)将始终包含明确定义的状态。我通常使用以下命令序列来实现此目的:
git checkout local
git reset --hard master
git merge my-public1 my-public2 my-private1 my-private2

答案 1 :(得分:0)

如果该开源项目在GitHub上,则需要fork it(在服务器端克隆),然后在本地克隆它(forks work also on BitBucket,对于Mercurial或Git)。

从那里,您可以将您想要的任何分支推送到您的远程(分叉)仓库 但是您的pull requests只会涉及您想要回馈原始回购的分支。

如果您希望“自定义”提交保持完全私有,请将您的fork(在GitHub或BitBucket上)作为私人回购。
注意:private repos are actually free on BitBucket! (和not free on GitHub)。

其他解决方案并不实用,因为他们认为您可以直接推送到开源项目(即成为该项目的贡献者)。情况并非总是如此,因此在提出拉取请求之前,必须首先进行分叉(并制作您自己的远程仓库,您可以根据需要进行贡献)。

答案 2 :(得分:0)

这是它的工作原理。

1)下载存储库。 2)创建分支做修改。 3)与开源项目维护者共享您的分支。 (根据代码库主位置有不同的方法)

如果他们喜欢您的更改,他们会将您的分支与主人合并,否则他们会拒绝他们。

如果他们拒绝他们,他们通常会告诉你原因。根据这个原因,您可以进行进一步的更改,将其分配到新项目,或放弃更改。如果开发的原因是参与开源项目,那么你永远不应该合并为master,除非维护者也要求你。

然而,您应该学习如何重新分支一个分支,以便与主人保持联系。