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

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

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

  • 有一个远程origin,在两台机器上都称为origin,它拥有一个 repo
  • 在笔记本上,还有一个名为 desktop 的 Remote ,它包含一个带有工作副本的 repo
  • 在桌面上,还有一个名为 notebook 的 Remote ,它包含一个带有工作副本的 repo

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

当我要将更改从笔记本推送回桌面 机器时,事情出现了问题:Git push error '[remote rejected] master -> master (branch is currently checked out)'当前分支当前在 desktop 上 checkout 时会出现问题。

为了避免错误,我想提前知道当前在desktop checkout 的是哪个分支。有办法实现吗?


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

最佳答案

How could I find out which branch is checked out on a remote machine?

下面的命令,

git remote show <remote-name>

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

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>

关于git - 我怎样才能找出在远程机器上 checkout 的分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27480112/

相关文章:

git - IntelliJ 和 Git 分支名称

git - Mercurial 与 GIT 和 SVN 相比如何?

git - 在 git 中添加补丁,所有 hunks 匹配文件中的正则表达式

git 只从一个分支删除文件

ruby-on-rails - git - 无法推送到远程,错误 'fatal: Not a git repository'

git stash 和 git stash 应用时无需立即清除工作目录

git - Git 如何获取分支的数据?

amazon-elastic-beanstalk - Gitlab 中的钩子(Hook)或其他东西可以对 AWS Elastic Beanstalk 执行 git aws.push

git - 为什么 git push 有时需要一个 localref 参数?