Я написал неверное в сообщении о фиксации. Кроме того, я забыл включить некоторые файлы.
Как я могу изменить сообщение / файлы фиксации? Конец еще не нажат.
Я написал неверное в сообщении о фиксации. Кроме того, я забыл включить некоторые файлы.
Как я могу изменить сообщение / файлы фиксации? Конец еще не нажат.
git commit --amend
откроет ваш редактор, что позволит вам изменить сообщение фиксации последнего коммита. Кроме того, вы можете установить сообщение commit непосредственно в командной строке:
git commit --amend -m "New commit message"
... однако, это может сделать многострочные сообщения фиксации или небольшие исправления, более громоздкие для ввода.
Убедитесь, что у вас нет каких-либо изменений в рабочей копии поставил перед тем, как сделать это, или они также будут совершены. ( Unstaged изменения не будут совершены.)
Если вы уже подтолкнули свой фиксатор к удаленной ветке, то вы необходимо принудительно нажать фиксацию с:
git push <remote> <branch> --force
# Or
git push <remote> <branch> -f
Предупреждение: принудительное нажатие перезапишет удаленную ветвь с состоянием вашего локального , Если на удаленной ветке есть коммиты, которых у вас нет в вашем локальном филиале, вы будем потерять эти коммиты.
Предупреждение: будьте осторожны при внесении поправок в то, что вы уже поделились с другими людьми. Внесение поправок в переписывает их иметь разные ША ID, что создает проблему, если у других людей есть копии старой фиксации, которую вы переписали. Любой, у кого есть копия старого коммита, должен будет синхронизировать свою работу с вашим недавно переписанным фиксатором, что иногда может быть затруднено, поэтому убедитесь, что вы координируете работу с другими при попытке переписать общую историю фиксаций или просто не переписываете общие коммиты в целом.
Другой вариант - использовать интерактивную перезагрузку.
Это позволяет редактировать любое сообщение, которое вы хотите обновить, даже если это не последнее сообщение.
Чтобы выполнить скриншот git, выполните следующие действия:
// X is the number of commits to the last commit you want to be able to edit
git rebase -i HEAD~X
Как только вы раздавите свои коммиты - выберите e/r
для редактирования сообщения
Когда вы используете git rebase -i HEAD~X
может быть Больше чем X
совершает. Гит будет «собирать» все коммиты в последнем X
коммиты, и если бы произошло слияние где-то между этим диапазоном, вы увидите все коммиты, так что результат будет X +.
Если вам нужно сделать это для более чем одной ветки, и вы можете столкнуться с конфликтами при изменении содержимого, настройте git rerere
и пусть git автоматически разрешит эти конфликты для вас.
git commit --amend -m "your new message"
Если фиксация, которую вы хотите исправить, не самая последняя:
git rebase --interactive $parent_of_flawed_commit
Если вы хотите исправить несколько ошибочных коммитов, передайте родительскую часть самой старой из них.
Появится редактор со списком всех фиксаций с момента, когда вы дали.
pick
в reword
(или в старых версиях Git, чтобы edit
) перед любыми фиксациями, которые вы хотите исправить. Для каждой фиксации вы хотите менять формулировку , Git вернет вас обратно в ваш редактор. Для каждой фиксации вы хотите редактировать , Гит бросает тебя в раковину. Если вы находитесь в оболочке:
git commit --amend
git rebase --continue
Большая часть этой последовательности будет вам объяснена выводом различных команд по ходу. Это очень просто, вам не нужно запоминать это - просто помните, что git rebase --interactive
позволяет исправить ошибки независимо от того, как давно они были.
Обратите внимание, что вы не захотите изменять фиксации, которые вы уже нажали. Или, может быть, вы это сделаете, но в этом случае вам придется проявлять большую осторожность, чтобы общаться со всеми, кто, возможно, потянул ваши коммиты и сделал работу поверх них. Как восстановить / повторить синхронизацию после того, как кто-то нажал на переустановку или сброс в опубликованную ветку?
Чтобы внести изменения в предыдущую фиксацию, внесите необходимые изменения и выполните эти изменения, а затем выполните
git commit --amend
Это откроет файл в текстовом редакторе, представляющем ваше новое сообщение фиксации. Он начинает заполняться текстом из вашего старого сообщения фиксации. Измените сообщение фиксации так, как хотите, затем сохраните файл и завершите работу редактора.
Чтобы изменить предыдущую фиксацию и сохранить одно и то же сообщение журнала, запустите
git commit --amend -C HEAD
Чтобы исправить предыдущую фиксацию, полностью удалив ее, запустите
git reset --hard HEAD^
Если вы хотите отредактировать более одного сообщения фиксации, запустите
git rebase -i HEAD~commit_count
(Заменить commit_count с количеством коммитов, которые вы хотите изменить.) Эта команда запускает ваш редактор. Отметьте первый фиксатор (тот, который вы хотите изменить) как «редактировать» вместо «выбрать», затем сохраните и выйдите из редактора. Внесите изменения, которые вы хотите зафиксировать, а затем выполните
git commit --amend
git rebase --continue
Примечание. Вы можете «Сделать изменение, которое хотите» также из редактора, открытого git commit --amend
Как уже упоминалось, git commit --amend
это способ перезаписать последнее коммит. Одна заметка: если вы хотите также перезаписать файлы , команда будет
git commit -a --amend -m "My new commit message"
Вы также можете использовать git filter-branch
для этого.
git filter-branch -f --msg-filter "sed 's/errror/error/'" $flawed_commit..HEAD
Это не так просто, как тривиальный git commit --amend
, но это особенно полезно, если у вас уже есть некоторые слияния после вашего сообщения с ошибочным фиксацией.
Обратите внимание, что это попытается переписать КАЖДОЙ фиксацию между HEAD
и ошибочная фиксация, поэтому вы должны выбрать свой msg-filter
команда очень мудрая ;-)
I prefer this way.
git commit --amend -c <commit ID>
Otherwise, there will be a new commit with a new commit ID
If you are using the Git GUI tool, there is a button named amend last commit. Click on that button and then it will display your last commit files and message. Just edit that message and you can commit it with new commit message.
Or use this command from a console/terminal:
git commit -a --amend -m "My new commit message"
You can use Git rebasing. For example, if you want to modify back to commit bbc643cd, run
$ git rebase bbc643cd^ --interactive
In the default editor, modify 'pick' to 'edit' in the line whose commit you want to modify. Make your changes and then stage them with
$ git add <filepattern>
Now you can use
$ git commit --amend
to modify the commit, and after that
$ git rebase --continue
to return back to the previous head commit.