Git reset удалить новые файлы

Обновлено: 02.07.2024

В том случае, если изменения, внесённые пользователем, находятся в режиме накопления, применить их к ветке можно с помощью команды git stash apply. Также можно запустить git diff — эта команда поможет выявить различия. Для того, чтобы затем избавиться от накопленных данных, нужно запустить команду:

Если существует более одного накопления, найти нужное можно с помощью команды:

git stash list затем можно применить его, воспользовавшись его индексом:

Необходимо учитывать, что отсчёт индексов ведётся от нуля.

Восстановление удалённого тега

В том случае, если необходимо восстановить случайно удалённый тег, начать можно с его поиска:

После того, как нужный тег найден, его следует восстановить:

Восстановление удалённого файла

Если вы случайно удалили файл, его можно быстро восстановить:

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

Восстановление удалённой ветки

С помощью комманды git reflog можно узнать хеш (SHA1) последнего коммита в удалённой ветке. Скопируйте этот хеш и используйте в команде:

После этого восстановить удалённую ветку можно будет вот такой командой:

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

Использование алиасов команд в командной строке

Устали каждый раз печатать git status? Этой команде можно присвоить простой алиас, который проще и быстрее вбивать в git.

— теперь нужно писать только git st

Можно пойти дальше и присвоить алиасы более сложным командам:

Теперь алиас git logme будет выводить все наши коммиты.

Коммит в неправильную ветку

Нужно переключиться на новую ветку, которую вы забыли предварительно создать:

А затем переключиться к оригинальной ветке:

. и «откатиться» до последнего коммита, который нужно сохранить.

Чтобы это сделать, можно воспользоваться командой git log и сохранить хеш (SHA1) последнего коммита, который нужно оставить.. Например, это a31a45c.

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

Обновление конкретного подмодуля

Чтобы обновить конкретный подмодуль в репозитории, нужно добавить путь к подмодулю:

Откат к конкретному коммиту в истории

Если вас не очень беспокоят изменения в локальном репозитории, то можно «откатиться» к конкретному коммиту в истории с помощью команды:

Эта команда установит HEAD на конкретный коммит. Также можно воспользоваться хешем коммита.

Отмена коммита до публикации изменений

Если вы сделали коммит, который впоследствии понадобилось отредактировать или полностью стереть, поможет команда git reset.

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

Отмена коммита после отправки его в master-репозиторий

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

Отмена только коммита, который является вторым после последнего:

Простая отмена последнего коммита:

Отмена локальных изменений файлов

Простейшим способом избавиться от нежелательных изменений для файлов и папок является восстановление состояния последнего коммита. Сделать это можно с помощью специальной команды:

Кроме того, можно восстановить конкретный путь к файлу:

Отображение всех коммитов одного файла

Если вы хотите просмотреть все коммиты с изменениями конкретного файла, воспользуйтесь командой git log --follow -p -- myfile

Аргумент —follow позволяет вывести все изменения над файлом, даже если в процессе работы он был переименован.

Отображения числа коммитов от каждого участника

Хотите узнать, сколько коммитов сделал каждый участник команды?

Эта команда выведет список, отсортированный в порядке убывания количества коммитов: git shortlog -s -n

Отобразить коммиты, содержащие удалённые файлы

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

Она покажет список коммитов, в которых удалялись файлы.

Отсортировать коммиты по автору

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

Очистка всех скрытых состояний

Очистить все скрытые состояния можно следующей командой:

Переименование локальной и удалённой ветки

Предложим, у вас есть ветка «fix-bug25», которую вы захотели переименовать в «hotfix-users». Прежде всего, нужно будет изменить локальную ветку:

А затем — удалённую ветку: переименовать её напрямую нельзя, поэтому нужно будет её удалить, и затем опубликовать заново уже с новым именем. Прежде чем приступать к этим процедурам, следует убедиться, что никто из членов команды не работает с этой веткой! Удаляем ветку: git push origin :fix-bug25

А теперь заново публикуем её с новым именем: git push origin hotfix-users

Переименование тега

Чтобы переименовать существующий тег:

Перестать отслеживать существующие файлы

Если вы хотите перестать отслеживать файлы, которые уже есть в репозитории, но при этом желаете сохранить его локально, осуществите коммит изменений и запустите команду:

Она удалит изменённые файлы из зоны подготовленных файлов (staging area). Затем нужно запустить команду:

Подготовка удалённых файлов

Чтобы подготовить к коммиту файлы и папки, которые были удалены локально, можно использовать специальную команду:

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

Пометить конфликтующий файл, как разрешённый

Чтобы пометить один или несколько конфликтующих файлов, как разрешённые, чтобы их можно было нормально изменять, воспользуйтесь командой:

Затем можно запустить git commit, чтобы разрешить конфликты и опубликовать изменения.

Просмотр всех неотправленных коммитов

Чтобы просмотреть все коммиты, которые ещё не были отправлены в соответствующие ветки, воспользуйтесь следующей командой:

Кроме того, можно использовать:

Просмотр старой ревизии файла

Существует возможность просмотреть содержимое файла в конкретный момент времени в прошлом. Для этого нужно использовать команду:

Публикация локальной ветки для удалённого редактирования

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

Теперь они тоже смогут вносить изменения в эту ветку.

Сброс локальной ветки до состояния удалённой

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

Прежде всего нужно получить свежие обновления из удалённой ветки:

А затем нужно сообщить git, что локальную ветку следует «откатить» до состояния удалённой:

При наличии коммита, который нужно сохранить, перед сбросом нужно создать новую ветку и произвести коммит: git commit -m «Обновление»

Синхронизировать ветку с master-репозиторием

Чтобы синхронизировать последние изменения в репозитории master (или с любой другой веткой, с которой вы работали) необходимо «перебазировать» локальную ветку. Предположим, вы работаете над веткой foobar:

А затем осуществляете «перебазирование»:

После этого будут применены коммиты origin из master. После разрешения конфликтов процесс можно продолжить с помощью команды git rebase —continue. Теперь можно продолжать работу над своей веткой или осуществить её слияние (merge) с главным репозиторием.

Слияние локальных изменений с другой веткой

Это можно сделать прямо в процессе стандартного слияния (merge). Вам стоит сохранить историю слияний используя флаг —no-ff, что означает no fast forward.

Перейдите в ветку, в которую будут вливаться изменения, убедитесь в её актуальности и запустите процесс:

Совмещение двух и более коммитов

Здесь нам понадобится произвести интерактивное перебазирование. Если перебазирование происходит относительно master-ветки, то начать следует с команды git rebase -i master. Однако, если перебазирование происходит не относительно ветки, то нужно будет перебазироваться относительно HEAD.

Если есть необходимость в совмещении двух последних коммитов, можно использовать команду

После её ввода появятся инструкции по выбору коммитов. В том случае, если необходимо совместить все коммиты с первым старейшим коммитов, то в первой строке нужно написать pick, а для всех остальных коммитов изменить букву на f. Подробнее здесь

Совмещение коммитов по конкретной функции для добавления в ветку релиза

Если вы решите совместить и опубликовать коммиты, то возникнет новый коммит в ветке релиза, поэтому история ветки конкретной функции останется неизменной.

Ниже представлен пример того, как достичь подобного эффекта:

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

Создание новой ветки с изменениями текущей

Эта команда перенесёт файлы из текущей ветки в новую, которую потом уже можно «закоммитить».

Убрать файл из буфера

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

Удаление внешней ветки

Если вы хотите удалить ветку, введите команду:

Удаление неотслеживаемых файлов и папок

Чтобы удалить неотслеживаемые файлы и папки из рабочей копии наберите следующую команду:

Чтобы в принципе удалить их:

Подсказка: чтобы увидеть, какие файлы являются лишними, перед их непосредственным удалением, наберите:

Удаление старых веток, стёртых из внешнего репозитория

Если ветка удалена из внешнего репозитория, её также можно стереть из локального репозитория с помощью команды

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

Удаление файла из git с сохранением его локальной копии

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

Без Гита и жизнь не та

Получите практику в Git на курсах HTML Academy. Мы расскажем всё, что знаем сами, чтобы вы прокачали навыки в веб-разработке.

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

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

мой вопрос:

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

(2) Когда мы используем git reset --hard как я могу сбросить даже без этой команды

*решение : основное редактирование(ы): 03/26 : * Заменил многие расплывчатые термины специальной терминологией git [отслеживается / не отслеживается / ставится / не отслеживается]

при внесении локальных изменений может быть только три категории файлов:

Тип 1. Устроили отслеживаемые файлы

Тип 2. Отслеживаемые файлы проиндексированы

Тип 3. Unstaged UnTracked files a.к. Неотслеженные файлы

  • Staged - те, которые перемещены в промежуточную область / добавлены в index
  • отслеживаемые-измененные файлы
  • UnTracked-новые файлы. Всегда нетронутым. Если они инсценированы, значит, их отслеживают.

что каждая команда делает:

git checkout . - удаляет только неустановленные отслеживаемые файлы [Тип 2]

git clean -f - Удаляет только неустановленные файлы [Тип 3]

git reset --hard - удаляет поэтапные отслеживаемые и неустановленные отслеживаемые файлы только[Тип 1, Тип 2]

git stash -u - удаляет все изменения [Тип 1, Тип 2, Тип 3]

вывод:

понятно, что мы можем использовать

для достижения желаемого результата.

Примечание.: Тайник, так как слово означает ' хранить (что-то) безопасно и тайно в указанном месте. Это всегда можно получить с помощью git stash pop . Поэтому выбор между двумя вышеперечисленными вариантами-это вызов разработчика.

спасибо Кристоф и Фредерик Schøning.

Edit: 03/27

я подумал, что стоит поставить 'будьте осторожны' Примечание git clean -f

пути назад нет. Использовать -n или --dry-run чтобы просмотреть ущерб, который вы сделаете.

если вы хотите также удалить каталоги, работать git clean -f -d

если вы просто хотите удалить игнорируемые файлы, запустите git clean -f -X

если вы хотите удалить игнорируемые, а также не игнорируемые файлы, запустите git clean -f -x

изменить: 05/20/15

отбрасывание всех локальных коммитов в этой ветке [удаление локальных коммитов]

чтобы отбросить все локальные коммиты в этой ветви, сделать локальную ветвь идентичной чтобы "вверх по течению" этой ветви, просто запустите git reset --hard @

или git reset --hard origin/master [если местное отделение master ]

Примечание.: 06/12/2015 Это не дубликат другого вопроса SO, который помечен как дубликат. Этот вопрос касается того, как удалить локальные изменения GIT [удалить добавленный файл, удалить изменения, добавленные в существующий файл и т. д., и различные подходы; где в другом потоке SO только адрес, как удалить локальную фиксацию. Если вы добавили файл, и вы хотите удалить его в одиночку, то другой поток SO не обсуждает его. Следовательно, это не дубликат другого один]

Edit: 06/23/15

как вернуть фиксацию, уже отправленную в удаленный репозиторий?

Edit: 09/01/2015

удалить предыдущую фиксацию из локальной ветви и удаленной ветви

Case: вы просто внесли изменения в свою локальную ветку и сразу же нажали на удаленную ветку, Вдруг понял , О нет! Мне не нужны эти изменения. Что теперь делать?

git reset --hard HEAD

1 [для удаления этой фиксации из локальной ветви]

git push origin HEAD --force [обе команды должны быть выполнены. Для удаления из удаленной ветви]

что за филиал ? Его в настоящее время проверен филиал.

изменить 09/08/2015 - удалить локальный git слияние:

я master филиал и объединены master филиал с новой рабочей веткой phase2

Q: Как избавиться от этого слияния? Пытался git reset --hard и git clean -d -f Оба не сработали.

единственное, что работала какие-то из них ниже:

$ git reset --hard 9a88396f51e2a068bb7 [sha commit code - это тот, который присутствовал до того, как все ваши коммиты слияния произошли]

перезагрузка

полностью удалите все поэтапные и неустановленные изменения в отслеживаемых файлах.

Я часто использую жесткий сброс, когда мне нравится "просто отменить все, как если бы я сделал полный повторный клон с пульта дистанционного управления". В вашем случае, где вы просто хочу, чтобы ваше РЕПО было чистым, это сработает.

очистить

удалить файлы, которые не отслеживаются.

опция-f (force) также удалит файлы, которые не отслеживаются и также игнорируются git, хотя ignore-rule. В приведенном выше случае с правилом игнорирования никогда не отслеживать папки bin/obj, даже если эти папки игнорируются git, использование опции force удалит их из вашей файловой системы. Я спорадически видел использование для этого, например, при развертывании сценариев, и вы хотите очистить свой код перед развертыванием, сжимая или еще что-нибудь.

git clean не будет касаться файлов, которые уже отслеживаются.

оформить заказ "точка"

Я на самом деле никогда не видел эту запись, прежде чем читать ваш пост. Мне трудно найти документацию для этого (возможно, кто-то может помочь), но от игры вокруг немного, похоже, это означает:

"отменить все изменения в моем рабочем дереве".

т. е. отменить неустановленные изменения в отслеживаемые файлы. Он, по-видимому, не касается поэтапных изменений и оставляет неотслеженные файлы в покое.

хранит

некоторые ответы упоминают о тайниках. Как следует из формулировки, вы, вероятно, будете использовать stashing, когда вы находитесь в середине чего-то (не готовы к фиксации), и вам нужно временно переключать ветви или как-то работать над другим состоянием вашего кода, чтобы позже вернуться к вашему "грязному столу". Я не вижу, что это относится к вашему вопросу, но это определенно удобно.

подведем итоги

как правило, если вы уверены, что вы совершили и, возможно, подтолкнули к удаленным важным изменениям, если вы просто играете или тому подобное, используя git reset --hard HEAD следовал по git clean -f окончательно очистит ваш код до состояния, он был бы в, если бы он только что был клонирован и извлечен из ветки. Очень важно подчеркнуть, что сброс также удалит поэтапные, но незафиксированные изменения. это сотрет все, что не было совершено (кроме неотслеживаемых файлов, в этом случае, используйте очистить).

все остальные команды существуют для облегчения более сложных сценариев, где требуется детализация "отмены материала":)

Я чувствую, что ваш вопрос № 1 охвачен, но, наконец, в заключение №2: причина, по которой вы никогда не находили необходимости использовать git reset --hard было то, что вы никогда ничего не ставили. Если бы вы инсценировали изменение, ни git checkout . ни git clean -f вернул бы это.

надеюсь, что это покрывает.

как и все в Git есть несколько способов сделать это. Две команды, которые вы использовали, - это один из способов сделать это. Еще одна вещь, которую вы могли бы сделать, это просто спрятать их с git stash -u . The -u убеждается что заново добавленные файлы (untracked) также включены.

удобная вещь о git stash -u Это

  1. это, вероятно, самый простой (только?) одна команда для достижения вашей цели
  2. если вы передумаете после этого вы получите все ваша работа с git stash pop (это как удаление электронной почты в gmail, где вы можете просто отменить, если вы передумаете после этого)

Что касается вашего другого вопроса git reset --hard не будет удалять неотслеженные файлы, поэтому вам все равно понадобится git clean -f . Но git stash -u может быть наиболее удобным.

причина добавления ответа в данный момент:

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

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

или это можно сделать как двухэтапный процесс

создать ветку: git branch branchname работа над этой веткой: git checkout branchname

git stash -u также удаляет все изменения

Примечание: Ясно, что мы можем использовать либо (1) комбинация git clean –d –f и git reset --hard ИЛИ (2) git stash -u для достижения желаемого результата.

Примечание 1: тайник, так как слово означает " хранить (что-то) безопасно и тайно в указанном месте."Это всегда можно восстановить с помощью git stash pop. Поэтому выбор между двумя вышеперечисленными вариантами-это вызов разработчика.

примечание 2: git reset --hard удалит изменения рабочего каталога. Перед запуском этой команды обязательно сохраните все локальные изменения, которые вы хотите сохранить.

git fetch [это может потребоваться (в зависимости от конфигурации git) для получения обновлений в origin / master ]

чтобы отбросить все локальные коммиты в этой ветви, локальная ветвь, идентичная "восходящей" этой ветви, просто запустите

Use-Case: вы только что совершили переходите на местную ветку и сразу же нажимаете на удаленную ветку, вдруг понимаете, о нет! Мне не нужны эти изменения. Что теперь делать?

git reset --hard HEAD

1 [для удаления этой фиксации из локальной ветви. 1 обозначает один коммит]

git push origin HEAD --force [обе команды должны быть выполнены. Для удаления из удаленной ветви]. В настоящее время проверенная ветка будет называться веткой, в которой вы выполняете эту операцию.

предположим, у вас есть 3 коммита, которые вы нажали на удаленную ветку с именем' develop '

вернуться к старой фиксации (для изменения состояния филиала)

git log --oneline --decorate --graph //, чтобы увидеть все ваши commitids

git clean -d -f // очистить любые локальные изменения

git reset --hard commitid-1 // локально возвращаясь к этому commitid

git push -u origin +develop // push это состояние к удаленному. + делать силу толчка

на ветке master

$ git merge phase2 $ git status

на ветке master

ваша ветвь опережает "origin / master" по 8 commits.

Q:Как избавиться от этого локального слияния git? пробовал git reset --hard и git clean -d -f оба не сработали. Единственное, что работала какие-то из них ниже:

$ git reset --hard origin/master

$ git reset --hard HEAD

$ git reset --hard 9a88396f51e2a068bb7 [sha commit code - это тот, который присутствовал до всех ваших коммитов слияния случилось]

image

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

Черт, я сделал что-то не то. Дайте мне волшебную машину времени!


image

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

Я случайно закоммитил в мастер, хотя это должен был в новую ветку!


Если вы уже закоммитили в публичную ветку, команды не сработают. В этом случае поможет git reset HEAD@ вместо HEAD

Ну вот, я ошибочно закоммитил не в ту ветку


Есть еще один способ, который использует большое количество разработчиков — это cherry-pick.


Мне нужно запустить diff, но ничего не получается

Если вы уверены в том, что изменения были внесены, но diff пустой, вполне может быть, что вы индексировали изменения через add. Поэтому стоит использовать специальный флаг.

git diff --staged

В общем, это не баг, а фича, но она чертовски неочевидная ¯\_(ツ)_/¯

Мне срочно нужно отменить коммит, который сделан 5 коммитов назад


К счастью, не нужно отказываться назад на 5 коммитов, занимаясь копипастом старых и новых файлов. Отменить все это можно при помощи revert.

Кроме того, откатить можно не только коммит, но и целый файл. Правда, это уже будут другие команды…

Отменить изменения в файле

А вот и они, эти другие команды.


Когда я впервые нашел эту возможность, это было КРУТО, КРУТО, К-Р-У-Т-О. Но если задуматься — почему именно checkout — лучший вариант для отмены изменений в файле? :shakes-fist-at-linus-torvalds:

Все, я сдаюсь


Спасибо Eric V. За этот способ. И все жалобы по поводу использования sudo адресуйте ему.

Если вам нужно обнулить изменения и полностью откатиться до исходной версии, то можно попробовать сделать именно так. Но помните — эти команды разрушительны и необратимы.


Внимание! Эта статья не является исчерпывающим руководством. И да, есть и другие способы сделать то же самое, причем еще лучше. Но я пришел именно к этим вариантам методом проб и ошибок. Потом у меня появилась сумасшедшая идея поделиться находками. Берите это или уходите!

image

Комментарий эксперта

Даниил Пилипенко, директор центра подбора IT-специалистов SymbioWay и евангелист бэкенд-направления онлайн-университета Skillbox, дополнил перевод мнением о Git и его актуальности для разработчиков.

Если вы начинающий разработчик и собираетесь устраиваться на работу, обязательно изучите Git! Вы должны знать, что такое система контроля версий и зачем она нужна, что такое коммит, ветка, как клонировать репозиторий и отправлять сделанные изменения на сервер, как получать новые изменения с сервера, как делать merge, какие бывают виды “reset”. Поначалу эта тема вам может показаться непонятной и сложной, но вам нужно лишь привыкнуть пользоваться Git, и отвыкнуть вы уже не сможете.

я просто клонировал репозиторий git и проверил ветку. Я работал над этим, а затем решил удалить все мои локальные изменения, так как я хотел оригинальную копию.

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

мой вопрос:

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

(2) Когда мы используем git reset --hard как я могу сбросить даже без этой команды

*решение: основные изменения: 03/26:* Заменил многие расплывчатые термины специальной терминологией git [отслежено / не отслежено / поставлено / неустановлено]

там может быть только три категории файлы, когда мы делаем изменения:

Тип 1. Поэтапные отслеживаемые файлы

Тип 2. Неустановленные отслеживаемые файлы

Тип 3. Неотслеживаемые файлы проиндексированы на.к.а неотслеживаемые файлы

  • Staged - те, которые перемещаются в промежуточную область / добавляются в индекс
  • отслеживаемые-измененные файлы
  • UnTracked-новые файлы. Всегда проиндексированы. Если они поставлены, это означает, что они отслеживаются.

что каждая команда делает:

git checkout . - удаляет отслеживаемые файлы проиндексированы только [тип 2]

git clean -f - Удаляет только неустановленные файлы без отслеживания [Тип 3]

git reset --hard - удаляет только поэтапные отслеживаемые и Нестагированные отслеживаемые файлы[Тип 1, Тип 2]

git stash -u - удаляет все изменения [Тип 1, Тип 2, Тип 3]

вывод:

понятно, что мы можем использовать

для достижения желаемого результата.

Примечание.: Тайник, как слово означает 'хранить (что-то) безопасно и тайно в указанном месте. Это всегда можно получить с помощью git stash pop . Поэтому выбор между указанными выше двумя вариантами является вызовом разработчика.

спасибо Кристоф и Фредерик Шенинг.

Edit: 03/27

я подумал, что стоит поставить 'будьте осторожны' Примечание git clean -f

пути назад нет. Используйте -n или --dry-run для просмотра ущерб, который вы будете делать.

если вы хотите также удалить каталоги, работать git clean -f -d

если вы просто хотите удалить игнорируемые файлы, запустите git clean -f -X

если вы хотите удалить игнорируемые, а также не игнорируемые файлы, запустите git clean -f -x

изменить: 05/20/15

отбрасывание всех локальных коммитов на этой ветке [удаление локальных коммитов]

чтобы отбросить все локальные коммиты на этой ветке, чтобы сделать локальную ветку идентичной чтобы "вверх по течению" этой ветви, просто запустите git reset --hard @

или git reset --hard origin/master [если местный филиал master ]

Примечание.: 06/12/2015 Это не дубликат другого вопроса SO, который помечен как дубликат. Этот вопрос касается того, как удалить локальные изменения GIT [удалить добавленный файл, удалить изменения, добавленные в существующий файл и т. д., и различные подходы; где в другом потоке SO только адрес, как удалить локальную фиксацию. Если вы добавили файл, и вы хотите удалить его в одиночку, то другой поток SO не обсуждает его. Следовательно, это не дубликат другого один]

Edit: 06/23/15

как вернуть фиксацию, уже отправленную в удаленный репозиторий?

Edit: 09/01/2015

удалить предыдущую фиксацию из локальной ветви и удаленной ветви

Case: вы просто внесли изменения в свою локальную ветку и сразу же перешли к удаленной ветке, Вдруг понял , О нет! Мне не нужны эти изменения. И что теперь делать?

git reset --hard HEAD

1 [для удаления этой фиксации из локальной ветви]

git push origin HEAD --force [обе команды должны быть выполнены. Для удаления из удаленной ветки]

что за ветка ? Его в настоящее время проверил филиал.

изменить 09/08/2015 - удалить локальный git слияние:

я master филиала и слили master ветка с новой рабочей веткой phase2

Q: Как избавиться от этого слияния? Пытался git reset --hard и git clean -d -f И то и другое не сработало.

единственное, что работала любой из нижеперечисленных:

$ git reset --hard 9a88396f51e2a068bb7 [sha commit code - это тот, который присутствовал до того, как все ваши коммиты слияния произошли]

  1. это, наверное, самый простой (только?) одна команда для достижения своей цели
  2. если вы передумаете после этого вы получите все ваши работы с git stash pop (это как удалять почту в Gmail, где вы можете просто отменить, если вы передумали позже)

Читайте также: