gpt4 book ai didi

git - 在本地和服务器上处理多个 Git Head

转载 作者:太空狗 更新时间:2023-10-29 13:54:03 26 4
gpt4 key购买 nike

我正在使用 Linonde 来托管我的 git 存储库以及实际的站点文件。

git branch -r 看起来像这样:

company/master
company/stage
origin/HEAD -> origin/master
origin/master
prod/master

git 分支看起来像这样:

master
stage

我想我只想让我的本地阶段分支指向我的公司/总负责人。当我执行 git push company stage 时,它似乎更新了服务器上的 stage head,但我试图让它更新 master head,这是我的网站似乎从中提供文件的地方。或者我需要弄清楚如何将我的网站指向公司/舞台主管。

我尝试删除我的分支并创建一个分支

git branch stage company/master

因为我认为起点可能是我需要的。

当我尝试推送之后我收到消息:

error: failed to push some refs to 'root@foo:~repos/project_name'
To Prevent you from losing history, non-fasst-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.)

我尝试了 git pull,但它说一切都是最新的,而且我在快进的帮助文档中看不到任何解决我的情况的内容。

最佳答案

首先,值得解释一下当您这样做时会发生什么:

git push company stage

最后一个参数真的是一个refspec ,它定义了源引用和目标引用之间的映射——在您可能要处理的简单情况下,这些“引用”是分支名称。如果 refspec 中没有 :,则假定您要推送到同名的分支。因此,您运行的命令等同于:

git push company stage:stage

相反,如果您想更新 company 存储库中的 master 分支,那么您需要执行以下操作:

git push company stage:master

继续,当您删除分支并重新创建它时:

git branch stage company/master

... 在您的 git 配置中创建条目,将您的本地分支 stage 与存储库 company 中的分支 master 相关联。 ¹ 这意味着如果你在分支 stage 上,运行 git pull 应该做正确的事情,在这种情况下将更新远程跟踪分支 company/master,并将其 merge 到stage

不幸的是(并且令人困惑)这些配置选项不会(默认情况下)影响 git push 的行为,我 wrote about in some detail elsewhere .您没有提到您随后使用的 git push 命令的形式,但您应该这样做:

git push company stage:master

... 如果您想使用本地 stage 分支更新 company 存储库中的 master 分支。 (如果您只是尝试 git push company,它将尝试推送本地存储库和 company 之间的每个“匹配”分支,其中“匹配”表示“本地和远程存在相同的名称”。您可以通过将 push.default 配置选项设置为 tracking 来更改此行为。)


¹ 在早期版本的 git 中,您必须添加 --track 参数,但有一段时间这是默认设置,起点是远程跟踪分支。

关于git - 在本地和服务器上处理多个 Git Head,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7139574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com