我正在尝试将提交从一个分支A推送到另一个分支B
所以当我使用以下命令时 -
dev > git push origin dev:staging
然后它说,
! [rejected] dev -> staging (fetch first)
问题在于,当我git branch -a
时,它不会列出暂存分支。
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:1)
您的git push
命令说:
origin
。dev
确定的提交,以及你所拥有的所有他们不承认的提交。 (运行git rev-parse dev
以查看提交的哈希ID,或git log dev
以查看该提交以及从该提交可以访问的所有早期提交。)staging
设置为步骤2中使用的哈希ID。在这些步骤中,没有任何建议您的 Git应该在您的存储库中使用名称staging
执行任何操作。您只需要让他们在他们的存储库中使用名称staging
执行某些操作。
您可以运行git fetch origin
指示您的Git在同一个网址上调用他们的Git。然后,您的Git将拥有所有分支名称的Git列表,以及这些分支名称指向的提交哈希ID。对于你不所拥有的每个这样的提交,你的Git将从他们的Git获得提交以及他们拥有该提交的任何早期提交>你不。当您的Git完成所有这些新提交后,您的 Git将在您的存储库中更新甚至创建名称,以便记住他们的分支提示哈希。
您的Git将使用的名称是origin/staging
:您的Git将重命名其分支名称,以生成远程跟踪名称。如果他们有master
,dev
和staging
,您的Git会更新或创建您的 origin/master
,origin/dev
和{ {1}}。
答案 1 :(得分:0)
所以,我知道push正在告诉你要抓取,我知道你的本地仓库没有staging
分支......但是当你说那是“问题”时,我不知道理解。
您说要将dev
分支推送到远程staging
分支。该错误表明远程staging
分支存在并指向无法从dev
ref访问的提交 - 这意味着更新不是快进的并且将是一个有效的“上游” rebase“,可能会失去他人的变化,并且肯定会将回购的所有其他用户置于一个他们需要恢复的糟糕状态。
这并不意味着staging
应显示在您的本地回购的分支列表中,即使使用-a
,因为您可能尚未从远程提取staging
引用。如果您执行了git fetch
,那么我希望origin/staging
包含在git branch -a
的输出中。