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



我正在使用 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 上查看没有显示任何最近的更新......

谢谢!

为了将develop推送到master,语法将是:

git push origin develop:master 

您在第二个命令(合并后推送到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)

现在我想把这个本地分支(开发(推送到我的远程主分支:git push origin master然后我回来了:Everything up-to-date

git pushgit push <remote> <refspec>.refspec不仅仅是推送到哪个分支(目标(,也是从哪里推送(源(。从git-push文档中...

<参考规格>...

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

重要的一点是...

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

所以git push origin master真的很git push master:master.master没有任何变化,所以一切都是最新的。

develop推送到远程主站其git push develop:master

虽然您可以执行此操作,但不建议将其作为正常工作流的一部分。让您的本地存储库与远程存储库不同会极大地混淆事情。

最新更新