2009-10-21 2 views
4

Я использую git (на самом деле, msysgit) 1.6.4 на Windows. Большую часть времени я занимаюсь некоторыми филиалами. Время от времени я хочу вернуться к мастеру, чтобы сделать вишню - выбрать один конкретный коммит, который я сделал в своей ветви функции, - обычно потому, что это полезное исправление, которое имеет смысл даже без этой функции. Мой рабочий, как это - если это излишне сложным, пожалуйста, скажите мне :-):Есть ли простой способ перейти к ранее активной ветке?

 
git checkout -b mycoolfeaturebranch 
// hack away, implementing a feature and one bugfix (while I'm at it) 

git add file_with_bugfix.cpp 
git commit -m "Fixed bug 12345 // commit the bugfix 
git checkout master    // hop over to master 
git cherry-pick     // bring the bugfix into master 

На данный момент, я обычно хочу, чтобы вернуться назад и моей особенностью отрасли, чтобы продолжить работу по этой функции. К сожалению, мои имена филиалов имеют тенденцию становиться немного длинными (например, «mycoolfeaturebranch»), и у меня нет завершения вкладки имени ветки git в Windows.

Возможно, что-то вроде cd - на оболочках Unix (которое перескакивает в предыдущий каталог, полезно для переключения между двумя каталогами)? A git checkout - было бы здорово. :-)

ответ

4

От $ GIT/Документация/файле RELNOTES-1.6.2.txt:

  • "мерзавец фотографии -" это сокращение для "мерзавец кассе @ {- 1}".

Вы попробовали?

+0

Argh! Я попробовал его с более старой версией git, но не повторил его с тех пор, как я обновил git 1.6.4. D'о! Спасибо за указание на это! –

4

Try:

git checkout @{-1} 

От git rev-parse:

Специальная конструкция @{-<n>} означает й ветви проверил перед текущим.


Как упомянуто Stefan Näwe в his answer:

"git checkout -" является сокращением для "git checkout @{-1}".

Несмотря на то, что синтаксис @{-1} был вокруг 1.6.2, это только с 1.6.2 он полностью эффективным, так как Junio ​​C. Hamano комментарии back in February 2009 (курсив мой):

The @ Синтаксис {-1} был добавлен задолго до того, как вы начали получать hyperactive этот раунд, но он будет в 1.6.2, а был объявлен как «полезный везде, где вы можете использовать название филиала», но на самом деле это не ,

Я исправляю различные места, чтобы соответствовать реальности с требованием.
Я делаю «git merge @{-1}» работаю сейчас.


(Примечание: это отличается от @{<n>}

реф с последующим суффиксом @ с порядковой спецификацией, заключенной в паре скобки (например {1}, {15}), чтобы указать н-е
Например, [email protected]{1} является непосредственным значением предшествующего значения ведущего устройства, а [email protected]{5} является 5-м предшествующим значением ведущего устройства.
Этот суффикс может быть о nly следует использовать сразу после имени ref, а ref должен иметь существующий журнал ($ GIT_DIR/logs /).

Вы можете использовать конструкцию @ с пустой частью ref, чтобы добраться до рефлога текущей ветки.
Например, если вы находитесь на ветке blabla, то @{1} означает то же, что и [email protected]{1}.

)

+0

Отлично! Хорошо работает - к сожалению, @ {- 1} немного раздражает. На данный момент я создал псевдоним под названием «git cc», который выполняет «git checkout @ {- 1}». Или, может быть, есть способ сделать «git checkout» - псевдоним для git checkout @ {- 1} '? –

+0

'git checkout -' функционирует как' git checkout @ {- 1} '. '@ {- 1}' является частным случаем более общей '@ {- n}', то есть последней последней вывешенной ветки. –

Смежные вопросы