Сброс пульта к определенной фиксации

Я хочу, чтобы отменить все изменения, сделанные после фиксации в <совершить-хэш> . Так я и сделал:

git reset --hard <commit-hash>

Теперь я хочу сделать то же самое с моего пульта. Как я могу это сделать? Я сделал несколько коммитов (и толкает) после того, как в `<совершить-хэш> и я просто хочу, чтобы отбросить их все. Это просто что-то пошло грозно не так и я Дон'т хотите, чтобы сделать его хуже, чем это уже. ;(

Я в принципе хочу перемотать свою происхождения/мастер в <совершить-хэш>

Комментарии к вопросу (2)
Решение

Предполагая, что ваша ветка называется "Мастер" как здесь, так и удаленно, и что ваш пульт называется происхождения вы могли бы сделать:

 git reset --hard 
 git push -f origin master

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

Обновление: вы'вэ объяснил ниже, что другие люди потянутся те изменения, которые вы'вэ толкают, так это'ы лучше создать новый коммит, который отменяет все изменения. Там'хорошее объяснение ваших вариантов для этого в ответ от Якуб Narębski. Какие из них наиболее удобной зависит от того, сколько коммитов вы хотите обратиться, и какой метод делает большинство смысл для вас.

Поскольку из вашего вопроса это'ы ясно, что вы уже использовали ГИТ сброс --жесткий сброс вашего мастер-ветке, вам может понадобиться, чтобы начать с помощью ГИТ сброс --жесткий ORIG_HEAD, чтобы переместить ветку туда, где она была раньше. (Как всегда с ГИТ сброс --жесткий, убедитесь, что Git в статус чисты, что вы&#39;вновь на Правый сектор и что вы&#39;вновь в курсев Git reflogв качестве инструмента для восстановления, видимо, потерял совершает.) Вы должны также проверить, чтоORIG_HEADуказывает на право совершить с помощью Git показать ORIG_HEAD.

Устранение неполадок:

Если вы получаете сообщение как-то "! [удаленный отклонено] a60f7d85 -и GT; мастер (предварительно получить крюк снизилась)" и

затем вы должны позволить истории филиала рерайтинг для конкретного филиала. Например, в системе Bitbucket он сказал "переписывания истории филиала не допускается и". Есть флажок под названием `допустить переписывания истории филиала, которые вы должны проверить.

Комментарии (12)

Используйте другие ответы, если вы не'т ум теряет локальных изменений. Этот метод по-прежнему может разрушить пульт дистанционного управления, если вы выберете неправильный фиксации хэш, чтобы вернуться.

Если вы просто хотите сделать удаленный матч фиксации, что's уже в вашем местном отделении:

  1. Ли не делать сбросе.
  2. Используйте журнале Git, чтобы найти хэш коммита, который вы хотите удаленный, чтобы быть. журнал -стр. ГИТ, чтобы увидеть изменения, или `ГИТ лог --графика --все --короткая --украсить увидеть компактное дерево. (Имея последнюю в качестве псевдонима в свою оболочку, очень удобно.)
  3. Скопировать хэш.
  4. Выполните примерно такую команду:

git толчок-силой <дистанционное> <хэш>:<удаленный филиал>

например

git толчок-силой происхождения 606fdfaa33af1844c86f4267a136d4666e576cdc:мастер

Комментарии (11)

Я решил проблему подобную вашей этой команды:

git reset --hard  
git push -f  : 
Комментарии (0)

На Гитлаб, вы можете установить свой филиал в незащищенный перед этим. Вы можете сделать это в [репо] и gt; Настройки > Хранилище > защищены филиалы. Тогда метод от Mark'ы ответьте работ.

git reset --hard 
git push -f origin master
Комментарии (0)

Если вы хотите, чтобы предыдущую версию файла, я рекомендую использовать git кассе.

git checkout 

Делать это будет отправить вас назад во времени, это не влияет на текущее состояние вашего проекта, вы можете прийти к магистрали ГИТ кассе хребтине

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

git checkout  -- file_name
git add .
git commit -m 'file brought from previous time'
git push

Преимущество этого заключается в том, что он не удаляет историю, а не вернуться в частности, изменения кода (ЖКТ вернуться)

Регистрация подробнее здесь https://www.atlassian.com/git/tutorials/undoing-changes#git-checkout

Комментарии (1)

Мои пять копеек к предыдущим ответам: Если

git push --force  :

до сих пор не't работа, вы могли бы хотеть изменить в <ваш-удаленный РЕПО и GT;.файл git/config файл's получают раздела:

[receive]
  #denyNonFastforwards = true
  denyNonFastforwards = false
Комментарии (0)

Если ваш филиал не разработки или производства, самый простой способ достичь этого-сброс с определенной фиксации локально и создать новую ветку оттуда. Вы можете использовать:

ГИТ кассе 000000

(где 000000-это идентификатор коммита, где вы хотите пойти) в проблемную ветку, а затем просто создать новую ветку:

удаленным git-добавить [name_of_your_remote]

Затем вы можете создать новый пиар и все будет работать нормально!

Комментарии (0)

Сделать одну вещь, сделать фиксацию'ы ша нет. например, 87c9808, а затем,

  1. переместить себя ,то есть свою голову к указанным коммитом (делая ГИТ сброс --жесткий 89cef43//указываете ваш номер здесь )
  2. Далее, сделать некоторые изменения в файл произвольного , так что Git будет просить вас совершить что локально и удаленно Таким образом, то, что вам нужно сделать сейчас. после применения изменений коммит в git'Е -А-М "в суде совершить"и
  3. Теперь нажимаем следующий коммит (если это было совершено локально) по git толчок происхождение мастер
  4. Теперь какие действия будут просить от вас, что

ошибка: не удалось подтолкнуть некоторые ссылки на 'https://github.com/YOURREPOSITORY/AndroidExperiments.git&#39; подсказка: обновления были отклонены, потому что кончик текущая ветка позади подсказка: его удаленного аналога. Интеграция дистанционного изменения (например, подсказка: 'ГИТ тянуть ...'), прежде чем снова толкает.**

  1. Таким образом, теперь что вы можете сделать, это

git толчок-силой происхождение мастера

  1. И таким образом, я надеюсь, что это работает :)
Комментарии (0)