Подтвердить что ты не робот

Как добавить файл к предыдущей фиксации?

В последний час или около того у меня есть измененные файлы

A
ATest
B
BTest

Чтобы убедиться, что мои сообщения о фиксации совпадают с фактическим изменением, передайте A с описанием. К сожалению, я не включил ATest в эту фиксацию.

Между тем, все еще не зафиксированы B и BTest.

Каков наилучший способ для этого? Я также хотел бы:

  • Отменить предыдущий коммит, не затрагивая мои незафиксированные файлы?
  • Добавить другой файл под тем же описанием в предыдущий коммит?
4b9b3361

Ответ 1

Чтобы добавить новый файл к предыдущей фиксации:

$ git add new-file
$ git commit --amend

Ответ 2

Здесь забавная блок-схема 1 которая также удивительно удобна: она дает правильную рекомендацию как для исходного вопроса, так и для измененного "Что, если это не последняя фиксация?" вопрос.

Git-pretty flowchart

1 Взято из http://justinhileman.info/article/git-pretty/

Ответ 3

Добавить файл в предыдущую фиксацию

Если вы уже нажали на ветку, над которой работаете, сначала просмотрите man pages. В частности, обратите внимание:

Rebasing (или любая другая форма перезаписи) ветку, на которой работают другие, - это плохая идея: кто-то из них вынужден вручную исправить свою историю.

Однако, если вы не нажали на свою ветку, подготовьтесь к вступлению в опасную зону.

Найти хеш фиксации

Во-первых, вам нужно знать хеш фиксации коммита, который вы хотите добавить. Это показано git log. Вы действительно хотите указать фиксацию до того, который хотите добавить. (Вы можете рассматривать его как начальный индекс для фрагмента коммитов, который вы хотите изменить.) Вы можете убедиться, что у вас есть право совершить, запустив git log HEAD~n. Где "n" - это целое число, которое вы увеличиваете до тех пор, пока не получите правильную фиксацию. Или вы можете рассчитывать, действительно нет.

Но, если вы действительно считаете, хотя бы подтвердите, что у вас есть право совершить с помощью git log HEAD~5 или независимо от вашего счета. Вы не должны видеть фиксацию, которую хотите добавить.

ОПАСНО, х

Теперь вы готовы запустить git rebase -i HEAD~5. Или что бы вы ни делали хеш. Это вызовет ваш любимый текстовый редактор и файл для редактирования. Файл представляет собой список дел для команды rebase. Комментарии в файле сообщают вам, какие у вас есть варианты. Просто найдите строку с фиксацией, которую хотите добавить, и на этой строке измените 'pick' на 'edit'. Теперь сохраните и закройте файл.

Перестановка остановится, как только она достигнет фиксации, которую вы сказали ей для редактирования. Запустите a git status, чтобы увидеть дополнительную информацию, которую он предоставляет. Сгруппируйте свои файлы, чтобы добавить к фиксации с помощью git add . или любых других имен файлов.

Тогда do git commit --amend. Это изменит фиксацию, которую вы решили изменить.

Наконец, запустите git rebase --continue.

Если вы сомневаетесь, в Linux вы можете узнать больше, прочитав вывод документации с помощью man git-rebase или git --help rebase.