Каковы различия между "revert", "amend", "rollback" и "undo" фиксации?

хотя я использую Git довольно часто, я все еще новичок.

иногда я делаю ошибку, но замечаю ее только после Я совершил это. В этот момент мне обычно приходится долго искать в Интернете команду, которую я должен использовать, чтобы избавиться от нее (перед тем, как нажать).

каждый раз, когда это происходит, я задаюсь вопросом, в чем разница между четырьмя терминами, которые я обычно прихожу поперек:

  • вернуться
  • изменить
  • откат
  • отменить.

У меня есть, что наконец-то пришло время узнать эти различия раз и навсегда. Каковы они?

3 ответов


условия вернуться и изменить имеют хорошо определенное значение в Git. В отличие от этого, откат и отменить не имеют такого четко определенного значения и открыты для интерпретации.

возвращаясь фиксации...

...означает создание (в текущей ветви) новой фиксации, которая применяет обратные изменения, введенные другой фиксацией. Это предпочтительный подход для исправления проблемы в РЕПО, которая имеет уже поделился с другими, потому что это не связано с каким-либо разрушением (т. е. переписыванием истории).

чтобы отменить фиксацию выявленных <commit>, просто запустите

    git revert <commit>

изменение фиксации...

...означает замену" текущей " фиксации на новую, которая имеет тот же родитель(ы); подробнее в как именно git commit --amend работает?

enter image description here

имейте в виду, что

  • О внесении изменений фиксация, которую вы уже нажали на общий пульт, - плохая практика, потому что это форма перезаписи истории (она "удаляет" самую последнюю фиксацию, на которой ваши сотрудники, возможно, уже основывали свою работу);
  • вы можете изменить только последний коммит в данной ветви; чтобы переписать старые коммиты, вам нужно вывести 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"