Каковы различия между "revert", "amend", "rollback" и "undo" фиксации?
хотя я использую Git довольно часто, я все еще новичок.
иногда я делаю ошибку, но замечаю ее только после Я совершил это. В этот момент мне обычно приходится долго искать в Интернете команду, которую я должен использовать, чтобы избавиться от нее (перед тем, как нажать).
каждый раз, когда это происходит, я задаюсь вопросом, в чем разница между четырьмя терминами, которые я обычно прихожу поперек:
- вернуться
- изменить
- откат
- отменить.
У меня есть, что наконец-то пришло время узнать эти различия раз и навсегда. Каковы они?
3 ответов
условия вернуться и изменить имеют хорошо определенное значение в Git. В отличие от этого, откат и отменить не имеют такого четко определенного значения и открыты для интерпретации.
возвращаясь фиксации...
...означает создание (в текущей ветви) новой фиксации, которая применяет обратные изменения, введенные другой фиксацией. Это предпочтительный подход для исправления проблемы в РЕПО, которая имеет уже поделился с другими, потому что это не связано с каким-либо разрушением (т. е. переписыванием истории).
чтобы отменить фиксацию выявленных <commit>
, просто запустите
git revert <commit>
изменение фиксации...
...означает замену" текущей " фиксации на новую, которая имеет тот же родитель(ы); подробнее в как именно git commit --amend работает?
имейте в виду, что
- О внесении изменений фиксация, которую вы уже нажали на общий пульт, - плохая практика, потому что это форма перезаписи истории (она "удаляет" самую последнюю фиксацию, на которой ваши сотрудники, возможно, уже основывали свою работу);
-
вы можете изменить только последний коммит в данной ветви; чтобы переписать старые коммиты, вам нужно вывести big guns (например, interactive rebase).
чтобы изменить фиксацию, внесите все необходимые изменения и выполните их, затем запустить
git commit --amend
здесь не нужно указывать фиксацию, потому что последняя фиксация в текущей ветви-это та, которая будет изменена. Затем появится редактор, который даст вам возможность изменить сообщение фиксации.
откат...
...обычно означает отбрасывание (или скрытие) любых локальных изменений и сброс ветви до фиксации (или просто проверка фиксации, но это помещает вас в состояние отсоединенной головы) до фиксации тот, где все начинает путаться. Использовать
git reset <commit-before-things-started-to-go-belly-up>
отменить коммит...
...может означать в зависимости от контекста, либо вернуться или изменить фиксации.
git --amend Вы должны использовать команду git --amend только для коммитов, которые не были переданы в общедоступную ветвь другого репозитория Git. Команда git --amend создает новый идентификатор фиксации, и люди могут основывать свою работу уже на существующей фиксации. В этом случае им нужно будет перенести свою работу на основе нового commit
git revert Вы можете отменить коммиты с помощью команды git revert. Эта команда отменяет изменения совершать. Такие фиксации полезны для документирования того, что изменение было отозвано.
здесь [Введите описание ссылки здесь][1]
[1]: как откатить (сбросить) репозиторий Git до определенной фиксации? о методах отката
Отмена Изменений: git checkout
, git revert
, git reset
, git clean
-
git revert
: эта команда отменяет изменения фиксации. он ведет учет в журналах. -
git reset
: эта команда отменяет изменения фиксации. он не поддерживает запись в журналах, т. е. сбрасывается на отмененную фиксацию. Примечание: это разрушительная функция. используйте эту команду осторожно.-
git reset --soft HEAD^
Отменить последнюю фиксацию, внести изменения в staging -
git reset --hard HEAD^
отменить последнюю фиксацию и все изменения -
git reset --hard HEAD^^
отменить последние 2 коммита и все изменения
-
git commit --amend
где изменить означает добавить к последнему коммиту. Иногда мы забывали добавить файлы для фиксации. например АБВ.txt файл был забыт, мы можем добавить следующее:git add abc.txt
иgit commit --amend -m "New commit message"