【问题标题】:GitHub, Git, how to submit changes to an upstream repositoryGitHub,Git,如何将更改提交到上游存储库
【发布时间】:2010-02-04 11:13:24
【问题描述】:

我们在内部使用 Git 已经有一段时间了,并且在我们的团队中拥有非常好的工作流程。昨天我们想向 GitHub 上的一个项目提交一些错误修复。这对我们来说是新事物。所以这就是我们所做的:

  1. 克隆了他们的存储库
  2. 分叉上游
  3. 将我们的 fork 添加为遥控器
  4. 修复了 master 分支中的一些错误
  5. 将 master 推送到我们的远程分支
  6. 发送拉取请求
  7. 他们取消了更改
  8. git fetch origin
  9. 在主人:git merge origin/master

这是正确的做事方式吗?我们最终得到了其他开发人员似乎没有得到的额外“Merge commit 'origin/master'”消息。同样在日志中,我们可以看到我们的提交两次。

一切似乎都很好,但感觉不对劲。有没有好的 GitHub 工作流页面? Git 帮助页面似乎错过了如何进行本地更改部分。

我认为如果我们在将更改推送到 fork 后回滚主分支,我们就不会遇到这个问题,但感觉也不对。

【问题讨论】:

    标签: git github


    【解决方案1】:

    这是一种方式。
    我更喜欢克隆 my GitHub 存储库(派生 GitHub 项目“theirRepo”的那个),而不是直接克隆现有的“theirRepo”。

    我建议将您的主分支重新设置在“theirRepo”之上,而不是合并。
    我相信这样可以避免在日志中看到您的两次提交,并且可以避免额外的“合并”提交消息。

    1. 在 myRepo 中分叉 theirRepo
    2. 克隆我的仓库
    3. 添加了“theirRepo”作为遥控器
    4. 修复了 master 分支中的一些错误
    5. 将 master 推送到我们的远程分叉“myRepo”
    6. 发送拉取请求
    7. 他们取消了更改
    8. git fetch theirRepo
    9. 在主人:git rebase theirRepo/master

    另请参阅此 SO 问题中讨论的各种类似策略(对于另一种情况,但这可以给你一些想法):How do I re-play my commits of a local git repo, on top of a project I forked on github.com?

    【讨论】:

    • 感谢您的帮助,非常感谢。如果我在 fetch 之后 rebase 将撤消我的提交,应用他们的提交(现在包括我的来自 pull)并在右上角重播我的? git 是否认识到提交是相同的,或者我在这里错过了什么?
    • @tsdbrown Git 应该检测到类似的提交(相同的 SHA1)
    • 太棒了,我希望是这样。下次我会先给这个。
    • @tsdbrown:不要犹豫,在此处发布一个反映此解决方案如何为您工作的答案;)
    猜你喜欢
    • 2012-04-05
    • 2011-12-30
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 2021-09-29
    • 2021-05-17
    • 1970-01-01
    相关资源
    最近更新 更多