如何让git-status检查两个不同的遥控器?

Max*_*kov 13 git git-status

每个git用户都习惯于此:

> git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

然而,最近我开始使用两个遥控器而不是一个(heroku和github,非常标准的情况,我认为),它开始让我烦恼只能在git status输出中看到1个原点.

我怎么能添加其他遥控器所以我会看到这样的东西?

> git status
On branch master
Your branch is up-to-date with 'origin/master'.
Your branch is up-to-date with 'heroku/master'.

nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

(这个问题与heroku或github无关,这只是一个方便的例子.)

jth*_*ill 6

git status 是您的工作树状态,一次一个分支状态.

如果你想看到所有分支状态,那么

git branch -avvv
Run Code Online (Sandbox Code Playgroud)


Bre*_*ust 6

git status只显示远程跟踪分支的相对状态。但是临时更改远程跟踪分支很容易:

git branch -u <remote>/<branch>
Run Code Online (Sandbox Code Playgroud)

然后git status将显示该分支的状态。

请注意,显示的更改是相同的,但正确显示了当前远程跟踪分支的提前/后提交数量。

获取所有远程分支状态的 bash 脚本:

for o in $(git remote -v | grep fetch | cut -f 1 -); do # remote branch names
  git branch -u $o/master  # set remote tracking branch (git v1.8+ syntax)
  git status
  echo --------------------------------   # separator
  git branch -u origin/master >/dev/null  # restore original tracking branch
done
Run Code Online (Sandbox Code Playgroud)

要使用单个命令获取两个来源的状态git s

git config --global alias.s "for o in $(git remote -v | grep fetch | cut -f 1 -); do git branch -u $o/master; git status; echo; git branch -u origin/master >/dev/null; done"
Run Code Online (Sandbox Code Playgroud)

这会为您的 ~/.gitconfig 文件添加一个别名(您可以稍后对其进行编辑以更改主远程分支或命令s)。

请注意,origin/master被硬编码为默认分支。要在没有硬编码的情况下使用任何分支,可以修改上面的脚本以首先获取当前的远程+分支,然后恢复它。

  • 好吧,该命令只是打印出与 `git status` 相同的内容,只有两次 (2认同)