Простой способ Git сквош? - PullRequest
2 голосов
/ 27 марта 2012

Я часто так делаю:

git add -u
git commit

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

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

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

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

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

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

Ответы [ 3 ]

6 голосов
/ 27 марта 2012

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

git add -u
git commit

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

git add -u
git commit --amend

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

1 голос
/ 27 марта 2012

Лучшее, что я нашел, это статья, в которой рассказывается о функции автоквоша, представленной в git 1.7.

http://technosorcery.net/blog/2010/02/07/fun-with-the-upcoming-1-7-release-of-git-rebase---interactive---autosquash/

0 голосов
/ 27 марта 2012

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

git add typointhisfile
git commit -vm

ИЛИ, если вы уже создали 2 коммита - вы можете сделать их одним с помощью:

git rebase -i HEAD~2

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

Вы лучше (IMO), тем не менее, предотвращая проблему в первую очередь.И для этого я предлагаю всегда делать подробные коммиты:

git commit -v

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

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

...