我怎样才能找出在远程机器上签出的分支?

eck*_*kes 3 git git-push git-remote git-branch

我正在使用 Git 在我的笔记本和台式计算机之间同步工作目录:

  • origin两台机器上都有一个遥控器,origin它包含一个仓库
  • 在笔记本上,还有一个名为的附加遥控器desktop,其中包含一个带有工作副本的存储库
  • 在桌面上,还有一个名为的附加遥控器notebook,其中包含一个带有工作副本的存储库

当我在家工作时,我通过(慢速)VPN 连接将提交推送到origindesktop。有时,碰巧我在台式机上启动了一个分支,离开了我的工作场所,这个分支被检出并继续在笔记本上工作。到目前为止非常简单。

当我要将更改desktop从笔记本推送回机器时,事情会出现问题:当前分支当前已签出时,会出现Git 推送错误“[远程拒绝] master -> master(分支当前已签出)”问题在desktop

为了避免错误,我想提前知道当前在 上签出哪个分支desktop。有没有办法实现这一目标?


是的当然。我可以等到我回到工作岗位再推送,然后在桌面上查看不同的分支。我也可以在每次离开工作场所时创建一个临时分支。我可以打开一个到我的台式机的 RDP 会话并检查一个不同的分支。我知道。但这不是我要的:没有解决方法。

jub*_*0bs 5

我怎样才能找出在远程机器上签出的分支?

以下命令,

git remote show <remote-name>
Run Code Online (Sandbox Code Playgroud)

打印关于 的各种信息<remote-name>,包括当前签出的分支。如果只想提取分支名称,可以运行以下命令:

git remote show <remote-name> | sed -n 's/  HEAD branch: //p'
Run Code Online (Sandbox Code Playgroud)

(至少,此命令适用于 Git 2.1.3。)

别名

作为奖励,这是它的别名:

[alias]
    remotehead = "!sh -c \"git remote show $1 | sed -n 's/  HEAD branch: //p'\" -"
Run Code Online (Sandbox Code Playgroud)

如果您在~/.gitconfig文件中添加此别名条目,您应该可以像这样使用它

$ git remotehead <remote-name>
Run Code Online (Sandbox Code Playgroud)