git创建或更新分支(在检查时) - 单个命令

时间:2015-09-16 14:53:07

标签: git git-branch git-checkout

我想创建一个新的分支并检查它。但是,如果我正在创建的分支名称已经存在,我不希望出现错误,我只是希望git将已经存在的分支更新到我正在检查它的位置。

以下是我正在做的事情:

$ git branch
  develop
* foobar
$ git checkout -b develop origin/develop
fatal: A branch named 'develop' already exists.
$ git update-ref refs/heads/develop origin/develop
$ git checkout develop
Switched to branch 'develop'
$ git branch
* develop
  foobar
$

这就像我想要的那样:

$ git checkout --update-if-exists -b develop origin/develop
Switched to branch 'develop'
$ git branch
* develop
  foobar
$

1 个答案:

答案 0 :(得分:-1)

我不知道有一个git命令允许你这样做,但是这里有一个bash脚本(我认为)可以做你想要的:

#!/bin/bash
git fetch origin "$1"
if [[ 0 != $? ]]; then
  git branch "$1"
fi
git checkout "$1"

编辑:(评论后)

我明白了。当然,我们可以像这样修复脚本:

#!/bin/bash
git branch "$1"
if [[ 0 != $? ]]; then
  git update-ref "refs/heads/$1" "origin/$1"
fi
git checkout "$1"

而且,如果您不希望它在第一个命令失败时显示错误,您可以将这些错误静音:

#!/bin/bash
git branch "$1" 2>/dev/null
if [[ 0 != $? ]]; then
  git update-ref "refs/heads/$1" "origin/$1"
fi
git checkout "$1"