Ответ 1
Чтобы добавить новый файл к предыдущей фиксации:
$ git add new-file
$ git commit --amend
В последний час или около того у меня есть измененные файлы
A
ATest
B
BTest
Чтобы убедиться, что мои сообщения о фиксации совпадают с фактическим изменением, передайте A
с описанием. К сожалению, я не включил ATest
в эту фиксацию.
Между тем, все еще не зафиксированы B
и BTest
.
Каков наилучший способ для этого? Я также хотел бы:
Чтобы добавить новый файл к предыдущей фиксации:
$ git add new-file
$ git commit --amend
Здесь забавная блок-схема 1 которая также удивительно удобна: она дает правильную рекомендацию как для исходного вопроса, так и для измененного "Что, если это не последняя фиксация?" вопрос.
Добавить файл в предыдущую фиксацию
Если вы уже нажали на ветку, над которой работаете, сначала просмотрите 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
.