有时我需要将分支移动到当前的提交。我有两种方法可以做到:
git checkout foo
git reset --hard HEAD@{1}
我不喜欢这个,因为这样我必须两次更改工作目录。更好的选择是:
git branch -f foo
git checkout foo
这样更好,但我想一步完成,就像我切换到新分支git checkout -b
一样。不幸的是,git checkout -f -b foo
不起作用。
答案 0 :(得分:4)
别名方法很好,但请注意git checkout -B
与单个原子事务的作用相同:
如果给出了
的交易等价物-B
,则&lt; new_branch&gt;如果它不存在则被创建; 否则,它被重置。这是$ git branch -f <branch> [<start point>] $ git checkout <branch>
也就是说,除非“git,否则不会重置/创建分支 结帐“成功。
(目前尚不清楚为何具体拼写为-B
而不是-f -b
,但关键是此 内置于git checkout
。)< / p>
答案 1 :(得分:2)
您可以像Scott Weldon所建议的那样,通过编辑您的Git配置文件来创建别名,但您也可以添加git config
的别名:
git config alias.branchout "! git branch -f $1; git checkout $1; true"
然后以同样的方式使用它:
git branchout foo
请注意,您始终可以将命令名称branchout
更改为您想要的任何内容,以使其更短一些。
答案 2 :(得分:1)
您可以使用别名。将其添加到您的Git配置文件:
[alias]
branchout = "! git branch -f $1; git checkout $1; true"
然后使用:
git branchout foo