Использование git — сброс

Команда git reset используется для отката версии, и вы можете указать версию для отката до определенного коммита.
Существует три метода команд.

git reset [--soft | --mixed | --hard] [HEAD]

Обязательное условие знаний: три важные рабочие области git:

  1. Рабочая область (рабочий каталог): каталог, в котором написан код. Это каталог, в котором хранится код проекта (каталог перед git add).
  2. Промежуточная область (индекс/стадия): буферная зона между рабочей областью и библиотекой версий. Для добавления файла используйте git add — по сути, это добавление модификации файла во временное хранилище и проверка записи состояния git.
  3. Область склада: git commit отправлен в локальную ветку, просмотрите запись git log

–mixed используется по умолчанию, вам не нужно указывать этот параметр

  1. Используется для сброса файлов в промежуточной области. В это время запись истории соответствует последней фиксации (коммиту), а содержимое файла рабочей области остается неизменным (с последним измененным содержимым). Переместите указатель HEAD и измените содержимое области временного хранения, но рабочая область не изменится.
  2. Изменения в исходном содержимом файла: измененное содержимое остается на месте и становится недобавленным.
  3. Изменения в структуре каталогов (добавление или удаление файлов):
    Новые файлы: Все еще существуют, становятся недобавленными (файлы в структуре каталогов становятся красными, нужно выполнить команду git add. Затем выполнить git commit) Удалить
    файлы: В каталоге структура еще не существует, вы можете напрямую выполнить git commit

–soft используется для отката к определенной версии

  1. Только перемещение текущего указателя заголовка не изменит содержимое рабочей области и области временного хранения.
  2. Изменения исходного содержимого файла: измененное содержимое все еще существует и добавляется (не фиксируется).
  3. Изменения в структуре каталогов (добавление или удаление файлов):
    Новые файлы: все еще существуют и добавляются (файлы в структуре каталогов становятся зелеными, можно снова выполнить git commit);
    удаление файлов: в структуре каталогов по-прежнему нет файлов вы можете напрямую выполнить git commit

Параметр –hard отменяет все незафиксированные изменения в рабочей области.

  1. Верните промежуточную и рабочую область к предыдущей версии, удалите всю предыдущую отправку информации и измените содержимое текущего указателя HEAD, рабочей области и промежуточной области.
  2. Изменения исходного содержимого файла: измененное содержимое теряется (измененный код не станет недобавленным)
  3. Изменения в структуре каталогов (добавление или удаление файлов): вновь добавленные файлы теряются, а удаленные файлы эквивалентны неудалению.

сцены, которые будут использоваться

– смешанный

1. После использования сброса --mixed выполните git add, чтобы добавить измененное содержимое файла в область временного хранения (индекс), а затем выполните git commit, чтобы отправить содержимое области временного хранения индекса в хранилище (репозиторий), например: Он может достичь эффекта слияния узлов фиксации
2. Его также можно использовать для поиска ошибок добавления.Вы можете выполнить git reset HEAD, чтобы сбросить файлы во временной области хранения (индекс).

-мягкий

1. После использования сброса --soft содержимое, отправленное после commit_id, будет помещено во временную область хранения (индекс). На данный момент оно добавлено. Вы можете напрямую выполнить фиксацию и отправить материалы после commit_id как одну фиксацию. Уменьшить ненужные записи журнала

-жесткий

1. Используйте git reset --hard HEAD (HEAD также может быть commit_id), чтобы принудительно восстановить содержимое и состояние папки, управляемой git; в это время все коммиты после целевого узла (commit_id) будут удалены.

 git log // 查询要回滚的 commit_id
 // 这里的commit_id是当前提交错误的想要撤回的commit之前的那个正确的commit
 // 执行前,先将本地代码切换到对应分支
 git reset --hard commit_id // HEAD 就会指向这个commit_id的提交记录
 git push origin HEAD --force // 强制推送到远端

С этой операцией возникла проблема.Хотя код на сервере был восстановлен, если несколько человек разрабатывают эту ветку, их локальная версия все равно выше, чем версия на сервере, поэтому другие будут повторно отправлять (отправлять) С точки зрения кода , операция, которую вы отмените, будет повторена, и указанная выше операция окажется напрасной. Решение состоит в том, чтобы попросить других сначала удалить локальную ветку, а затем снова извлечь ветку с сервера, или если вы отправляете весь локальный код, а другая сторона не изменяет код снова, вы отправляете его и обнаруживаете, что вы отправил его. Если возникла проблема, выполните операцию сброса еще раз, а затем попросите другую сторону получить последнюю версию кода. Это нормально. Самое главное, чтобы у другой стороны не было кода, который вы хотите сбросить локально. 2. Восстановление после случайного удаления. Если вы обнаружите, что после отката кода был скопирован неправильный commit_id
,
или если запись коммита была случайно удалена, ее также можно восстановить с помощью следующего кода:

git relog // 复制要恢复操作的前面的 hash 值
git reset --hard hash // 将 hash 换成要恢复的历史记录的 hash 值

Je suppose que tu aimes

Origine blog.csdn.net/wh13821662259/article/details/126909225
conseillé
Classement