我正在处理源代码的三个分叉版本。仅供参考我将名称更改为不透露身份/回购。以下是它的布局:
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)
此处, upstream 是原始源代码,是最新且最稳定的版本。 Origin是我的分叉版本。 ABC是别人的版本。
ABC有一个分支机构,我从那里开始工作。我想然后进行更改并推送到我的仓库(原产地),然后提交拉动请求。 ABC上的分支被称为" abc / obs-noise"。根据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(-)
然后我git推(据说是我的起源)。
git push -u origin abc/obs-noise
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 733 bytes | 733.00 KiB/s, done.
Total 5 (delta 4), reused 1 (delta 0)
remote: Resolving deltas: 100% (4/4), completed with 4 local objects.
To https://github.com/123/_library.git
* [new branch] abc/obs-noise -> abc/obs-noise
然而,我去了我的回购...没有abc / obs-noise,或者这个提交的任何证据。我是git的菜鸟,但我几乎可以肯定我做的一切都是正确的,它看起来就是那样。我想知道我在哪里找到我的提交?我不想重做我所有的工作。
答案 0 :(得分:4)
首先,你坐在一个独立的头上。这意味着您刚刚进行的任何提交都不会移动原始分支指针。如果你改变了活跃的分支,你很有可能失去这些提交,这就是为什么git push不会推动任何新的东西:原始的分支指针没有被移动。
首先,当您开始处理任何远程分支时,您应该创建一个本地分支,对应于给定的远程分支。使用
git checkout -b <local_branch_name> <remote>/<branch>
然后,当您提交时,此<local_branch_name>
将提前跟随您的提交行。当您需要将给定的提交行推送到远程分支时,请使用
git push <remote> <local_branch_name>:<remote_branch_name>
如果您需要为不同的遥控器设置多个开发线,您应该创建几个相应的本地分支并单独推送它们。
答案 1 :(得分:3)