Удалить коммиты из ветки в Git

Если вы используете Microsoft Drivers 3.1, 3.0 и 2.0. Проверьте, что ваша версия PHP уже установлена ​​с IIS. Используйте этот скрипт для проверки версии php:


ИЛИ

Если вы установили PHP Manager в IIS с помощью установщика веб-платформы, вы можете проверить версия от него.

Тогда: Если вы используете новую версию PHP (5.6), пожалуйста, загрузите Драйверы здесь Для версии PHP ниже 5.6 - загрузите Драйверы отсюда

  • PHP Driver версии 3.1 требует PHP 5.4.32 или PHP 5.5.16 или новее.
  • PHP Driver версии 3.0 требует PHP 5.3.0 или позже. Если возможно, используйте PHP 5.3.6 или новее.
  • Драйвер PHP Driver версии 2.0 работает с PHP 5.2.4 или новее, но не с PHP 5.4. Если возможно, используйте PHP 5.2.13 или более позднюю версию.

Затем используйте диспетчер PHP, чтобы добавить загруженные драйверы в файл php config. Вы можете сделать это, как показано ниже (просмотреть файлы и нажмите ОК). Затем перезагрузите сервер IIS

enter image description here [/g4]

Если этот метод не работает, пожалуйста, измените версию php и попробуйте запустить ваш php-скрипт , enter image description here [/g5] Чтобы изменить php version, чтобы опуститься, и попытайтесь понять, что произошло. Затем вы можете загрузить соответствующие драйверы, которые будут разбивать мои предыдущие шаги.

2956
задан Randall 5 September 2018 в 18:29
поделиться

6 ответов

Осторожно: git reset --hard УДАЛЯЕТ ИЗМЕНЕНИЯ ВАШЕГО РАБОЧЕГО КАТАЛОГА . Не забудьте спрятать все локальные изменения, которые вы хотите сохранить , перед запуском этой команды.

Предположим, вы сидите на этом коммите, тогда эта команда его разбудит ...

git reset --hard HEAD~1

HEAD ~ 1 означает коммит перед заголовком.

Или вы можете посмотреть на вывод из git log , найдите идентификатор фиксации, для которой вы хотите выполнить резервное копирование, а затем сделайте следующее:

git reset --hard <sha1-commit-id>

Если вы уже нажали его, вам нужно будет выполнить принудительное нажатие, чтобы избавиться от это ...

git push origin HEAD --force

Однако , если другие, возможно, вытащили его, тогда вам будет лучше начать новую ветку. Потому что, когда они потянут, он просто объединит его с их работой, и вы получите его снова.

Если вы уже нажали, может быть лучше использовать git revert , чтобы создать фиксация "зеркального отражения", которая отменяет изменения. Однако оба коммита будут в журнале.


FYI - git reset --hard HEAD отлично подходит, если вы хотите избавиться от РАБОТЫ. Он вернет вас к самой последней фиксации и сотрет все изменения в вашем рабочем дереве и индексе.


Наконец, если вам нужно найти фиксацию, которую вы «удалили», она обычно присутствует в git reflog , если в вашем репозитории не выполняется сборщик мусора.

3852
ответ дан 22 November 2019 в 19:47
поделиться

У Вас есть много альтернатив, например:

  • Альтернативный 1:

    git rebase -i <YourCommitId>~1
    

    Изменение YourCommitId для количества фиксации, к которой Вы хотите вернуться назад.

  • Альтернативные 2:

    git reset --hard YourCommitId
    git push <origin> <branch> --force
    

    Изменение YourCommitId для количества фиксации, к которой Вы хотите вернуться назад.

    я не рекомендую эту опцию, потому что Вы можете, потерял Вашу происходящую работу.

  • Альтернативные 3:

    git reset --soft HEAD~1
    

    можно сохранить работу и только отменить фиксацию.

1
ответ дан 22 November 2019 в 19:47
поделиться

В моем случае мой волшебный код для этой цели - этот:

git reset --hard @{u}

Тест это и говорят мне. Я попробовал несколько различных, но этот был единственным, которое помогло мне.

0
ответ дан 22 November 2019 в 19:47
поделиться

Если вы не публиковали изменения, чтобы удалить последнюю фиксацию, вы можете сделать

$ git reset --hard HEAD^

(обратите внимание, что это также удалит все незафиксированные изменения; используйте с осторожностью).

Если вы уже опубликованный коммит, подлежащий удалению, используйте git revert

$ git revert HEAD
50
ответ дан 22 November 2019 в 19:47
поделиться

Другая возможность - это одна из моих любимых команд:

git rebase -i <commit>~1

Это запустит перебазирование в интерактивном режиме -i в точке непосредственно перед фиксацией, которую вы хотите отменить. . Редактор запустит список всех коммитов с тех пор. Удалите строку, содержащую коммит, который вы хотите стереть, и сохраните файл. Rebase выполнит остальную работу, удалив только эту фиксацию и воспроизведя все остальные обратно в журнал.

476
ответ дан 22 November 2019 в 19:47
поделиться

Если вы еще никуда не отправили фиксацию, вы можете использовать git rebase -i , чтобы удалить эту фиксацию. Во-первых, выясните, как далеко эта фиксация (приблизительно). Затем выполните:

git rebase -i HEAD~N

~ N означает перебазирование последних коммитов N ( N должно быть числом, например HEAD ~ 10 ]). Затем вы можете отредактировать файл, который Git представляет вам, чтобы удалить ошибочную фиксацию. При сохранении этого файла Git перепишет все последующие коммиты, как будто тот, который вы удалили, не существует.

В Git Book есть хороший раздел о перемещении с изображениями и примерами.

Однако будьте осторожны, потому что если вы измените что-то, что вы отправили где-то еще, потребуется другой подход, если только вы не планируете принудительное толкание.

677
ответ дан 22 November 2019 в 19:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: