使用单个命令进行分支和签出

创建和使用新分支涉及两个命令:

$ git branch new_branch_name
$ git checkout new_branch_name

我往往会忘记后者,这可能会令人恼火。有没有办法只用一个命令就可以做到这一点?也许用了化名,或者类似的东西?我知道我可以编写一个 shell 函数,但是对于这样一个简单而普通的任务来说,这似乎有点太费工夫了。

Bazaar 使用 bzr branch --switch符号在一定程度上支持这一点。

17463 次浏览

在写这个问题的时候,我在类似的问题列表中找到了 “ git 分支”和“ git checkout-b”有什么区别?,我自己找到了答案:

$ git checkout -b new_branch_name

我猜测我在为错误的命令读取手册页,我期望这是 branch命令的一部分,而不是为 checkout。引用 checkout的手册页:

指定 -b将创建一个新分支,就像调用 git-branch(1)然后签出一样。

正是我要找的。

Git 在2.23版本中引入了 switch,以专门处理分支的更改,并避免使用 checkout,因为 checkout可以执行的操作数量太多,这可能会造成混淆。

除了其他可能性,

git switch <branch>  # to switch to an existing branch
git switch -c <new_branch>  # to create a new branch and switch to it

在 git 中有两个 oneliners。

  1. git checkout -b new_branch_name
  2. git switch -c new_branch_name

在引擎盖下,两者都做着同样的事情:

git branch new_branch_name
git checkout new_branch_name