2016-10-06 7 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 на все, что хотите, чтобы было еще короче, чтобы печатать.