Дополнительно
Сброс пульта к определенной фиксации
Я хочу, чтобы отменить все изменения, сделанные после фиксации в <совершить-хэш>
.
Так я и сделал:
git reset --hard <commit-hash>
Теперь я хочу сделать то же самое с моего пульта. Как я могу это сделать? Я сделал несколько коммитов (и толкает) после того, как в `<совершить-хэш> и я просто хочу, чтобы отбросить их все. Это просто что-то пошло грозно не так и я Дон'т хотите, чтобы сделать его хуже, чем это уже. ;(
Я в принципе хочу перемотать свою происхождения/мастер
в <совершить-хэш>
629
8
Предполагая, что ваша ветка называется "Мастер" как здесь, так и удаленно, и что ваш пульт называется
происхождения
вы могли бы сделать:Однако, вы должны избежать этого, если кто-то работает с удаленного репозитория и потянул свои изменения. В этом случае, было бы лучше вернуться коммиты, которые вы не'т хотите, то пуш нормально.
Обновление: вы'вэ объяснил ниже, что другие люди потянутся те изменения, которые вы'вэ толкают, так это'ы лучше создать новый коммит, который отменяет все изменения. Там'хорошее объяснение ваших вариантов для этого в ответ от Якуб Narębski. Какие из них наиболее удобной зависит от того, сколько коммитов вы хотите обратиться, и какой метод делает большинство смысл для вас.
Поскольку из вашего вопроса это'ы ясно, что вы уже использовали
ГИТ сброс --жесткий сброс вашего мастер-ветке, вам может понадобиться, чтобы начать с помощью ГИТ сброс --жесткий ORIG_HEAD
, чтобы переместить ветку туда, где она была раньше. (Как всегда сГИТ сброс --жесткий
, убедитесь, чтоGit в статус чисты, что вы'вновь на Правый сектор и что вы'вновь в курсе
в Git reflogв качестве инструмента для восстановления, видимо, потерял совершает.) Вы должны также проверить, что
ORIG_HEADуказывает на право совершить с помощью Git показать ORIG_HEAD
.Устранение неполадок:
Если вы получаете сообщение как-то "! [удаленный отклонено] a60f7d85 -и GT; мастер (предварительно получить крюк снизилась)" и
затем вы должны позволить истории филиала рерайтинг для конкретного филиала. Например, в системе Bitbucket он сказал "переписывания истории филиала не допускается и". Есть флажок под названием `допустить переписывания истории филиала, которые вы должны проверить.
Используйте другие ответы, если вы не'т ум теряет локальных изменений. Этот метод по-прежнему может разрушить пульт дистанционного управления, если вы выберете неправильный фиксации хэш, чтобы вернуться.
Если вы просто хотите сделать удаленный матч фиксации, что's уже в вашем местном отделении:
журнале Git
, чтобы найти хэш коммита, который вы хотите удаленный, чтобы быть.журнал -стр. ГИТ
, чтобы увидеть изменения, или `ГИТ лог --графика --все --короткая --украсить увидеть компактное дерево. (Имея последнюю в качестве псевдонима в свою оболочку, очень удобно.)git толчок-силой <дистанционное> <хэш>:<удаленный филиал>
например
git толчок-силой происхождения 606fdfaa33af1844c86f4267a136d4666e576cdc:мастер
Я решил проблему подобную вашей этой команды:
На Гитлаб, вы можете установить свой филиал в незащищенный перед этим. Вы можете сделать это в [репо] и gt; Настройки > Хранилище > защищены филиалы. Тогда метод от Mark'ы ответьте работ.
Если вы хотите, чтобы предыдущую версию файла, я рекомендую использовать git кассе.
Делать это будет отправить вас назад во времени, это не влияет на текущее состояние вашего проекта, вы можете прийти к магистрали ГИТ кассе хребтине
но при добавлении файла в аргументе, что файл возвращается к вам из предыдущей время вашего текущего проекта, т. е. вашего текущего проекта изменяется и должен фиксироваться.
Преимущество этого заключается в том, что он не удаляет историю, а не вернуться в частности, изменения кода (ЖКТ вернуться)
Регистрация подробнее здесь https://www.atlassian.com/git/tutorials/undoing-changes#git-checkout
Мои пять копеек к предыдущим ответам: Если
до сих пор не't работа, вы могли бы хотеть изменить в
<ваш-удаленный РЕПО и GT;.файл git/config файл
's получают раздела:Если ваш филиал не разработки или производства, самый простой способ достичь этого-сброс с определенной фиксации локально и создать новую ветку оттуда. Вы можете использовать:
ГИТ кассе 000000
(где 000000-это идентификатор коммита, где вы хотите пойти) в проблемную ветку, а затем просто создать новую ветку:
удаленным git-добавить [name_of_your_remote]
Затем вы можете создать новый пиар и все будет работать нормально!
Сделать одну вещь, сделать фиксацию'ы ша нет. например, 87c9808, а затем,
git толчок-силой происхождение мастера