在命令行中看不到git branch

问题描述 投票:0回答:2

我试图将提交从一个分支A推送到另一个分支B.

所以当我使用以下命令时 -

dev > git push origin dev:staging 

然后它说,

! [rejected] dev -> staging (fetch first)

问题是,当我做git branch -a时,它没有列出临时分支。

任何帮助都非常感谢。提前致谢。

git
2个回答
1
投票

你的git push命令说:

  1. 你自己的Git应该在你的origin中存储的URL中调用另一个Git。
  2. 然后你的Git应该向他们提供你的dev确定的提交,以及你拥有的所有他们没有提交的提交。 (运行git rev-parse dev以查看提交的哈希ID,或者git log dev以查看该提交以及从该提交可以访问的所有早期提交。)
  3. 在他们将这些提交保存在某个临时位置后,您的Git应该让他们的Git将他们的staging设置为步骤2中使用的哈希ID。

在这些步骤中没有任何地方有任何建议,您的Git应该在您的存储库中使用名称staging做任何事情。您只是要求他们在其存储库中使用名称staging执行某些操作。

你可以运行git fetch origin来引导你的Git在同一个URL上调用他们的Git。然后,您的Git将拥有所有分支名称的Git列表,以及这些分支名称指向的提交哈希ID。对于你没有的每个这样的提交,你的Git将从他们的Git获得提交以及他们拥有的你没有的任何早期提交。当您的Git完成所有这些新提交后,您的Git将更新甚至在您的存储库中创建名称,以记住它们的分支提示哈希值。

你的Git将使用的名称是origin/staging:你的Git将重命名他们的分支名称,以制作你的远程跟踪名称。如果他们有masterdevstaging,你的Git将更新或创建你的origin/masterorigin/devorigin/staging


0
投票

所以,我知道推送告诉你要取,我明白你的本地回购没有staging分支......但是当你说这是“问题”时,我不明白。

你说要把你的dev分支推到偏远的staging分支。该错误表明远程staging分支存在并指向无法从您的dev ref访问的提交 - 意味着更新不是快进并且将是有效的“上游rebase”,可能会丢失其他人的更改并且肯定会将repo的所有其他用户置于他们需要恢复的糟糕状态。

这并不意味着staging应该出现在你当地的repo的分支列表中,即使是-a,因为你可能没有从遥控器中获取staging ref。如果你做一个git fetch,那么之后我会期望origin/staging被包含在git branch -a的输出中。

© www.soinside.com 2019 - 2024. All rights reserved.