每个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无关,这只是一个方便的例子.)
git status 是您的工作树状态,一次一个分支状态.
如果你想看到所有分支状态,那么
git branch -avvv
Run Code Online (Sandbox Code Playgroud)
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被硬编码为默认分支。要在没有硬编码的情况下使用任何分支,可以修改上面的脚本以首先获取当前的远程+分支,然后恢复它。