2016-10-06 89 views
2

有時我需要將分支移動到當前提交。有兩種方法可以做到這一點:git branch -f和git checkout在一個步驟中

git checkout foo 
git reset --hard [email protected]{1} 

我不喜歡這樣,因爲這樣我必須改變工作目錄兩次。更好的選擇是這樣的:

git branch -f foo 
git checkout foo 

這是好,但我想這樣做一步到位,當我切換到一個新的分支git checkout -b只喜歡。不幸的是,git checkout -f -b foo不起作用。

回答

4

別名方法都很好,但請注意,git checkout -B做同樣的事情作爲一個原子事務:

如果-B給出,如果它不存在<new_branch>創建; 否則,它被重置。這是

$ git branch -f <branch> [<start point>] 
    $ git checkout <branch> 

事務相當於也就是說,分支不復位/創建除非「混帳 結賬」是成功的。

(目前尚不清楚爲什麼這是專門拼寫-B而非-f -b,但問題是,這是內置git checkout。)

1

您可以使用別名。添加到您的Git配置文件:

[alias] 
    branchout = "! git branch -f $1; git checkout $1; true" 

然後使用:

git branchout foo 
2

你可以做斯科特·韋爾登表明,通過編輯的Git配置文件創建的別名,但你也可以添加與git config別名:

git config alias.branchout "! git branch -f $1; git checkout $1; true" 

然後用同樣的方式:

git branchout foo 

請注意,您可以隨時將命令名稱branchout更改爲任何您想要的內容,以使其更短。

相關問題