2012-03-27 4 views
2

я часто делаю это:Легкий способ играть в сквош Git?

git add -u 
git commit 

... обнаружить ошибку, исправить ...

git add -u 
git commit -m "Fix typo" 

Есть простой способ пережать второй фиксации обратно в первый? Иногда я могу сделать это с git rebase -i, но иногда я просто получаю сообщение о том, чтобы быть в курсе последних событий.

Примечание. Я говорю только о ситуациях, когда я не нажал первую фиксацию. В основном я хочу использовать первое сообщение журнала, но с объединенным эффектом двух коммитов. Могу ли я использовать git commit --amend для таких вещей?

Этот связанный с этим вопрос вроде занимался этим: git: squash/fixup earlier commit

Лучший ответ годик, хотя, и мне интересно, если ситуация улучшилась?

ответ

6

Это именно то, что git commit --amend для. Учитывая ваш пример, все, что вам нужно сделать, это добавить --amend флаг вашей второй фиксации:

git add -u 
git commit 

... обнаружить ошибку, исправить ...

git add -u 
git commit --amend 

Вы можете сделать это визуально git gui также (есть радио-ящик для переключения между «новым фиксацией» и «изменить последний фиксатор»)

+0

Интересно - не знал о 'git gui'.Интересно, почему есть и это, и гитк. (Конкурирует за уродливый приз?: P) –

+0

Эти два имеют разные цели: 'git gui' предназначен для совершения, а' gitk' предназначен для просмотра и управления филиалами. Обратите внимание, что вы можете запустить 'git gui' из' gitk' и наоборот. –

0

Да, вы можете просто изменить предыдущую фиксацию.

git add typointhisfile 
git commit -vm 

ИЛИ если вы уже создали 2 фиксаций - вы можете сделать их один с:

git rebase -i HEAD~2 

Просто сквош один из них в другую.

Тебе лучше (ИМО), хотя и предотвратить проблему в первую очередь. И для этого я предлагаю всегда делать пространные фиксации:

git commit -v 

Прежде чем писать сообщение фиксации - обезжиренное диф изменений, которые вы собираетесь совершить, и просто закройте редактор, если вы видите что-то, что нужно исправить. Закрытие без ввода сообщения фиксации отменяет фиксацию.

Сделайте это привычкой, и необходимость совершения опечаток полностью исчезнет.

+0

Да. Я действительно делаю много визуальных проверок (в частности, git diff --cached). Все еще легко пропустить вещи. И, конечно же, вы * предположительно * совершаете часто. Так что не имеет смысла удерживать фиксацию до тех пор, пока все не будет совершенным ... –

+0

совершать часто и совершать ошибки 2 разных вещи @SteveBennett – AD7six

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