2016-08-17 3 views
0

Когда я работаю, я часто встречаюсь с этим рабочим процессом:Git: Команда для отмены фиксации

  1. Делая какие-нибудь.
  2. Кто-то приходит к моему столу и спрашивает что-то, я должен переехать в другую ветку для проверки.
  3. Я фиксирую код на этой текущей ветке и проверяю другую ветку.
  4. Когда я заканчиваю, я просматриваю ветку и продолжаю работать.

Этот рабочий процесс имеет недостаток: он генерирует фиктивную фиксацию в моей системе. Мой вопрос: как я могу избежать этой ситуации? Например, когда я вернусь на работу, я отменит предыдущую фиксацию?

+2

use stash https://git-scm.com/book/en/v1/Git-Tools-Stashing – deltree

+0

[как отменить последний коммит в git] (http://stackoverflow.com/questions/927358/how -to-undo-last-commits-in-git), вы можете найти свой ответ здесь – davidhu2000

ответ

6

В дополнение к двум существующим ответам (git reset и git stash), лично я просто игнорируют дополнительные фиксации (который имеет почти коммита послание wip ...), пока я не готов нажать изменения где-то далеко, например, в github для создания запроса на растяжение.

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

Я лично нашел, что это проще в использовании, чем git stash, так как я обычно нахожу, что я теряю информацию о том, какие заставки предназначены. (Моя ошибка, а не недостаток в git, но эффект по-прежнему плох.) Я подозреваю, что git reset тоже будет хорошо, но, как мне часто приходится переустанавливать в любом случае перед окончательным слиянием - например. реагировать на комментарии к обзору кода. У меня есть git rebase как более умственно эффективная часть моего рабочего процесса.

3

Для этого можно использовать git stash. Когда кто-то приходит к вашему столу, сделайте git stash, чтобы временно «отложить» вашу текущую работу. Проверьте другую ветку, сделайте свое дело, а затем, когда они уйдут, вернитесь в свою рабочую ветку и сделайте git stash pop.

Удостоверьтесь, что у вас нет никаких изменений, однако - git stash, если память обслуживает, игнорирует поэтапные изменения и невоспроизводимые файлы.

3

После того, как вы вернетесь к старой ветке, запустите git reset HEAD^, и вы вернетесь в свое предыдущее состояние. Последняя временная фиксация будет отброшена. Если вы оттолкнули эту фиксацию, вам понадобится - заставить новый толчок.

2

Кажется, что вам нужно git stash. Check out this site for usage. Ваши рабочий будет выглядеть примерно так:

git stash (тайники изменений в этой отрасли)

git checkout otherBranch (то делать свою работу)

git checkout firstBranch (возвращение к исходной работе)

git stash apply (возвращает ваши незафиксированные изменения)

Вы также можете использовать git rebase -i, чтобы избавиться от некоторых из ваших exi sting dummy commits, see this.

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