`git checkout <tree-ish> -B CURRENT_BRANCH`的简写?</tree-ish>

时间:2014-02-28 09:45:15

标签: git

是否有一个等同于以下的git命令,但不要求我每次都输入CURRENT_BRANCH部分?

git checkout <tree-ish> -B CURRENT_BRANCH

例如,我在分支上,并希望将其移回 origin / master ,因此我键入git checkout -B master origin/master。或者,也许我想将其移回 HEAD~ ,因此我输入git checkout -B master HEAD~。 - 注意,-B master部分似乎是多余的,因为我已经在

(我不想reset --hard,因为这会破坏脏文件。)

我正在寻找替代方案,主要是因为我倾向于不小心输入 git checkout -B <tree-ish> 以确保混淆。

2 个答案:

答案 0 :(得分:0)

使用git rev-parse获取当前分支名称:

git checkout -B $( git rev-parse --abbrev-ref HEAD ) origin/$( git rev-parse --abbrev-ref HEAD )

您可以创建一个返回当前分支的别名当前分支,以及另一个检查当前分支的别名 current-checkout (根据需要更改命令别名) :

# Add the current branch alias
git config --global alias.current-branch 'rev-parse --abbrev-ref HEAD'

# Add the checkout current branch alias
git config --global alias.checkout-current '!git checkout -B $( git current-branch ) origin/$( git current-branch )'

# Try the command
git checkout-current

修改

你也可以使用git reset --mixedgit reset --soft作为参考,具体取决于你想做什么(那些将保留你的“脏”文件)。

答案 1 :(得分:0)

别名似乎是目前唯一的出路:

git config --global alias.become '!git checkout -B "$(git symbolic-ref --short HEAD)"'

e.g:

$ git checkout foo
$ git become HEAD~
Reset branch 'foo'