Git 吉特重新调整到上游
所以我分叉了一个项目,做了一些更改,并将这些更改推给了origin/master。我不打算将这些更改发送回上游。到目前为止一切都很好,但现在我有一些改变,我确实想向上游推进Git 吉特重新调整到上游,git,Git,所以我分叉了一个项目,做了一些更改,并将这些更改推给了origin/master。我不打算将这些更改发送回上游。到目前为止一切都很好,但现在我有一些改变,我确实想向上游推进 我是否可以在另一个分支中重新设置到上游,并提交到该分支?我可以从我的分支提交这些更改吗?我的回购协议被严重破坏了吗?没有,没有。只需从上游/主节点进行分支,在那里进行提交,然后您就可以推送(或拉取请求)这些提交,这些提交正好适合上游/主节点 如果您有一个--B--C,其中上游/主控在A,主控在C,这意味着B和C是您不想向上游
我是否可以在另一个分支中重新设置到上游,并提交到该分支?我可以从我的分支提交这些更改吗?我的回购协议被严重破坏了吗?没有,没有。只需从上游/主节点进行分支,在那里进行提交,然后您就可以推送(或拉取请求)这些提交,这些提交正好适合上游/主节点 如果您有一个--B--C,其中上游/主控在A,主控在C,这意味着B和C是您不想向上游发送的提交,那么:
git checkout -b to-send-upstream A
# work, work, work
# commits
git log A..HEAD # this will be the commits to send upstream
如果您有不打算在master上发回的提交,那么如果您将这些提交移动到另一个分支并使您的master与上游/master保持同步,那么跟踪这些内容可能会更简单:
git branch my-stuff-not-sent-upstream
git reset --hard A # will wipe out local changes!
git push origin master -f # can lose history if a shared remote!
git push origin my-stuff-not-sent-upstream
将有效地将“master”替换为“my stuff not sent upstream”,并将master和origin/master设置为与upstream/master相同的提交方式。首先,您需要将upstream添加为远程提交
git remote add upstream https://github.com/upstream/repo.git
这意味着您不仅有“origin”(在GitHub端引用您自己的克隆),还有“上游”(即您在GitHub端分叉的原始回购)
然后您需要从上游取货,并从那里结账:
git checkout -b upstream/master
您可以在那里进行提交,然后推回原点,允许您从那里发出干净的拉取请求。假设提交a、B、C是您的私有更改,并且提交1、2、3是您想要推送的内容,您的历史记录将如下所示:
(origin/master)
/
.... o - A - B - C - 1 - 2 - 3 (master)
\
(upstream/master)
现在要将1,2,3从上游移动到新分支:
git checkout master
git checkout -b upstream
git rebase origin/master --onto upstream/master
这样做的目的是切换到一个新的分支,名为上游
,您当前的主机所在的位置。然后,它在上游/master引用的提交之后,对提交1、2、3进行重定
手术后,您将有:
1' - 2' - 3' (upstream)
/
/ (origin/master)
/ /
.... o - A - B - C - 1 - 2 - 3 (master)
\
(upstream/master)
现在,您将准备将上游分支推送到上游远程。您是说上游分支/主分支?命令是做什么的,可能是我缺少的部分。在意识到来源后更新了我的答案!=上游更有意义吗?太棒了这就是我要找的。我试图重新设置基址,但这会导致很多头痛,几乎没有结果。作为最佳实践,我应该将这些更改变成一个分支。对上游进行拉入,如果它被接受,则合并到master?我不能说是“最佳实践”,但我希望在成功拉入请求后,以及从上游拉入后,您已经看到它合并。我应该已经在上游拥有原始回购协议,但当我运行checkout-b upstream/master时,我得到错误:无法解析引用引用/heads/upstream/master:不是目录
致命:无法锁定引用以进行更新:不是目录
@Drew:只有当您的“git remote-v
将“upstream”列为您与本地repo.is关联的远程repo之一时,这才应该起作用提交散列?这真是太棒了,非常感谢您描述这个过程。--On指定您希望拾取一个带有所有提交的分支,将其从提交图中裁剪出来,然后将其重新附加到指定的分支/提交上。