Git:奇怪的行为将本地分支推送到远程主服务器?

时间:2018-06-24 03:52:30

标签: git github

我正在使用Git进行版本控制,并且在Github上有一个远程存储库,在我的机器上有一个本地主机。我要更改的文件是Toxic Comment Classification.ipynb

我对该文件做了一些修改。运行git status显示:

modified:   Toxic Comment Classification.ipynb

然后我跑:

git branch develop

git checkout develop

现在运行git status告诉我我在本地develop分支上,并且对Toxic Comment Classification.ipynb文件进行了更改。

现在我运行:

git add -u

git commit -m "checkpoint"

然后我回来:

[develop ef9250e] checkpoint
1 file changed, 116 insertions(+), 99 deletions(-)

一切似乎都很好。现在,我想将此本地分支(develop)推送到我的远程主分支:

git push origin master

然后我回来:

Everything up-to-date

这不是我期望/想要的。我可以成功推送到origin/develop

1)我在这里做错了什么?我希望看到我在develop分支上所做的更改反映在origin/master ...

最后,我尝试通过检出本地master分支并合并到本地develop分支来解决所有问题。然后我运行:

git push origin master

然后回来:

Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/bclayman/ToxicCommentTextClassification.git
   6de47de..ef9250e  master -> master

2)这种方法也不行吗?其输出使我认为没有任何更新,并且在Github上查看并没有显示任何最新更新...

谢谢!

2 个答案:

答案 0 :(得分:1)

要将develop推到master,请syntax would be

git push origin develop:master 

您在第二个命令中看到的 push statistics (合并后按master)反映了已推送的内容:没有任何内容。
没什么,因为您已经已经将其推送到origin/develop
因此,您的第二次推送只是master的快速前进:origin/master将其HEAD调整为origin/develop之一。

x   (HEAD, master, origin/master)
 \
  y (develop, origin/develop)

git merge develop

x   (origin/master)
 \
  y (HEAD, master, develop, origin/develop)

git push

x--y (HEAD, master, origin/master, develop, origin/develop)

答案 1 :(得分:1)

  

现在我想将此本地分支(开发)推送到我的远程主分支:git push origin master,然后返回:Everything up-to-date

git pushgit push <remote> <refspec>refspec不仅是要推送到(目的地)的分支,还是从(来源)推送的位置。从git-push docs ...

  

...

     

指定要使用哪个源对象更新的目标引用。 参数的格式是可选的加号+,后跟源对象,后跟冒号:,然后是目标参考

重要的是...

  

否则,缺少:意味着要更新与相同的引用。

所以git push origin master确实是git push master:mastermaster没有任何变化,因此一切都是最新的。

要将develop推送到远程主机,git push develop:master

尽管您可以执行此操作,但不建议您将其作为常规工作流程的一部分。将本地存储库与远程存储区分开会造成很大的混乱。