Git从一个远程分支推送到另一个远程分支

Git从一个远程分支推送到另一个远程分支,git,Git,我正在使用三个分叉版本的源代码。仅供参考,我更改了名称,不披露身份/回购协议。下面是它的布局: MyMBP:~/Documents/_library$ git remote -v abc https://github.com/abc/_library (fetch) abc https://github.com/abc/_library (push) origin https://github.com/123/_library.git (fetch) origin https://gith

我正在使用三个分叉版本的源代码。仅供参考,我更改了名称,不披露身份/回购协议。下面是它的布局:

MyMBP:~/Documents/_library$ git remote -v

abc https://github.com/abc/_library (fetch)
abc https://github.com/abc/_library (push)
origin  https://github.com/123/_library.git (fetch)
origin  https://github.com/123/_library.git (push)
upstream    https://github.com/source/_library (fetch)
upstream    https://github.com/source/_library (push)
这里,上游是原始源代码,是最新和最稳定的版本。起源是我的分叉版本。ABC是别人的版本

美国广播公司有一个分支机构,我从那里调出去工作。然后,我想进行更改并推送到我的回购协议(origin),然后提交一个pull请求。ABC上的分支称为“ABC/obs噪音”

在git状态下:

git status
HEAD detached from abc/obs-noise
当我对所述文件进行更改时,我承诺:

git commit
[detached HEAD e8eeea3] OBSERVATION NOISE ADDITION TO THE MONITORS
 1 file changed, 23 insertions(+), 11 deletions(-)
然后我推了推(应该是我的原点)


然而,我去我的回购。。。没有abc/obs噪音,也没有这起事件的任何证据。我在git是个笨蛋,但我几乎可以肯定我做的每件事都是对的,而且看起来是这样的。我想知道在哪里可以找到我的承诺?我不想重做我所有的工作。

你不能推开我的脑袋。唯一的办法是

git checkout -b newbranch e8eeea3
git push origin origin_branch_name
有关详细信息,请参阅


从@Torek输入后编辑:可能有一些用例,您希望推动分离的头部。有关详细信息,请参阅。请参阅下面的评论。

首先,你坐在一个分离的头上。这意味着您刚才所做的任何提交都不会移动原始分支指针。因此,如果更改活动分支,您很有可能会丢失这些提交,这就是git push不推任何新内容的原因:原始分支指针没有被移动

首先,当您开始处理任何远程分支时,您应该创建一个本地分支,对应于给定的远程分支。使用

git checkout -b <local_branch_name> <remote>/<branch>
git签出-b/
然后,当您进行提交时,此
将前进以跟随您的提交行。当需要将给定的提交行推送到远程分支时,使用

git push <remote> <local_branch_name>:<remote_branch_name>
git推送:

如果您需要为不同的远程设备创建多个开发行,那么应该创建多个相应的本地分支,并分别推送它们。

尝试
git checkout-b newbranch e8eeea3
。一切都在吗?哈哈。。。对天哪,谢谢你。我知道我现在应该在哪里看到了。但这很不幸。我不知道为什么这不是推到远程,而是本地?你可以从一个分离的头部推,但这是一种先进的Git使用。最好说“不要这样做,这太令人困惑了”:-)这是一个例子,是的。@Torek有没有一个用例可以让你推一个分离的头部?
git push <remote> <local_branch_name>:<remote_branch_name>