我们有一个有两个开发人员的项目,我们有一个远程存储库,我们都在本地克隆了它,我们在那里推送我们的工作。
推送更改后,我们转到另一台服务器(我们称之为 S),在那里实际的魔术发生,即生产。在这里,我们当然必须从前面提到的存储库中提取更改。
出于某种原因,我们有不同的远程存储库(对我来说是alt,我的朋友是origin),所以当我希望我的远程更改在生产中更新时,我使用git pull alt master
有一个通知,指出:
"Your branch is ahead of "origin/master" by X commits. Use "git push" to publish your local commits."
这是什么意思?我的朋友需要使用"git pull origin master"才能更新它的实际建议不是吗?我没有起源/主的写作权限,所以这是否意味着他在 S 中制作git pull origin master
会使通知消失?
我知道这是非常基本的东西,但我们都是这方面的新手,所以非常感谢任何帮助! :)我也浏览了大多数类似的问题,但找不到答案。
你说
当我希望我的远程更改在生产中更新时,我使用
git pull alt master
但这不是将新更改发送到生产服务器的适当操作。
您必须在那里push
新提交,这就是消息所暗示的。"领先"意味着向另一端做出未知的承诺。
归根结底,一旦你和你的朋友就发布状态达成一致,你们中的一个人应该将新的提交*推送到你的服务器S。
*(也许此时还可以考虑在此版本的提交上放置一个标签,这是一个很好的强制做法)
让我分步解释
一下- 你有远程分支,比如说在某个提交1。
- 您克隆了存储库,并将存储库调用为Alt,在Commit1中调用为远程存储库。
- 现在,您对 Alt 进行了更改,并将这些更改提交为X 提交,因此当前的存储库 Alt 位于CommitX上。
- 由于没有其他人将更改推送到您的远程存储库,因此您的遥控器处于 commit1 并且从未更新过
"您的分支在 X 提交的"源/主"之前。使用"git push"发布你的本地提交。
那么现在你为什么会收到这条消息?
因为您的远程存储库位于 Commit1 并且更新的更改为零,并且当您尝试从远程拉取时,当前存储库位于CommitX基本上是说您没有要拉取的更改,但当前存储库领先于 X 提交,因为您进行了这些并且尚未推送,建议尝试推送而不是拉取,因为从远程拉取没有更改
为避免此消息,只需使用 Git Push Commond 直接推送将您的更改推送到远程存储库,或者您可以遵循您当前在项目中关注的任何 GitFlow