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

时间:2014-12-15 08:38:21

标签: git git-branch git-push git-remote

我使用Git在笔记本和台式电脑之间同步工作目录:

  • 这两台计算机上已知origin远程origin,其中包含回购
  • 在笔记本上,还有一个名为desktop的远程遥控器,其中包含一份带有工作副本的仓库
  • 在桌面上,还有一个名为notebook的远程控制台,其中包含一份带有工作副本的仓库

当我在家工作时,我通过(慢速)VPN连接推送提交到origindesktop。有时候,我在桌面计算机上启动了一个分支,离开了我的工作区,这个分支正在检查并继续在笔记本上工作。到目前为止非常简单。

当我要从笔记本中将更改推回到desktop计算机时会出现问题:当前分支当前已在{{1}上签出时出现Git push error '[remote rejected] master -> master (branch is currently checked out)'问题}。

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


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

2 个答案:

答案 0 :(得分:4)

  

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

以下命令

git remote show <remote-name>

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

git remote show <remote-name> | sed -n 's/  HEAD branch: //p'

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

别名

作为奖励,这是别名:

[alias]
    remotehead = "!sh -c \"git remote show $1 | sed -n 's/  HEAD branch: //p'\" -"

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

$ git remotehead <remote-name>

答案 1 :(得分:2)

您可以使用git rev-parse来解析符号引用desktop/HEAD

% git rev-parse --symbolic-full-name desktop/HEAD
refs/remotes/desktop/master