Как отменить git add до коммита
Отмена действий в Git
Apr 24, 2020 · 3 min read
Мы всегда готовы подчеркивать бесчисленные возможности, которые предлагает Git, и эта статья не станет исключением. Git известен своей потрясающей способностью отменять практически любые действия! Наверняка на память вам уже приходят тысячи печальных случаев, когда вы делали объединение, а потом понимали, что в ваши планы оно не входило. Даже если вам кажется, что ошибочное объединение— это величайшая неудача всей вашей жизни, сделайте глубокий вдох и дочитайте статью до конца.
Не существует какого-то одного традиционного способа отмены действий в Git. Отмена производится с помощью некоторых других команд. Мы рассмотрим “первую пятерку” сценариев, которые помогут вам исправить ошибку и двинуться дальше.
Отмена Git Add
Од и н из самых распространенных вопросов в сообществе Git звучит так: “Как откатить git add перед коммитом?” Вы можете отменить действия над конкретным файлом или все внесенные изменения.
Решение, которое потребуется для этого, весьма простое. Чтобы откатить один файл, просто вызовите команду git reset :
Для отмены всех изменений запустите следующее:
Как откатить Git Merge
Объединение может привести к нежелаемым результатам. Но, как уже было сказано, вы можете с легкостью исправить свою ошибку! Давайте представим сценарий, в котором вы уже отправили изменения и осознали, что вам нужно отменить сделанное объединение.
Затем вернитесь к упомянутому коммиту, выполнив следующее:
Git также предлагает возможность предварительного просмотра, если вы хотите увидеть, что произойдет при объединении веток.
Как откатить Git Reset
Предлагаем суперкороткий способ отменить команду git reset:
Отмена последних коммитов в Git
Команду git reset можно использовать для отмены внесенных изменений:
x введите число. Например, если вы укажете
Другой метод — это команда git revert HEAD
Этот метод лучше всего работает в случае с общими публичными репозиториями.
Отмена Git Rebase
Допустим, вы выполнили команду git rebase в локальной ветке git и отправили ее в удаленную ветку. Следом вы поняли, что это не отвечает вашим ожиданиям, и захотели отменить сделанное.
Самый простой способ — найти главный коммит вашей ветки, запустив команду:
Заключение
Вот и все о том, как вы можете отменить наиболее часто используемые команды в Git. Хоть никакой традиционной команды отмены и нет, другие команды git могут помочь вам откатить то, что вы могли сделать по ошибке.
Отмена действий в Git
Мы всегда готовы подчеркивать бесчисленные возможности, которые предлагает Git, и эта статья не станет исключением. Git известен своей потрясающей способностью отменять практически любые действия! Наверняка на память вам уже приходят тысячи печальных случаев, когда вы делали объединение, а потом понимали, что в ваши планы оно не входило. Даже если вам кажется, что ошибочное объединение— это величайшая неудача всей вашей жизни, сделайте глубокий вдох и дочитайте статью до конца.
Не существует какого-то одного традиционного способа отмены действий в Git. Отмена производится с помощью некоторых других команд. Мы рассмотрим “первую пятерку” сценариев, которые помогут вам исправить ошибку и двинуться дальше.
Отмена Git Add
Один из самых распространенных вопросов в сообществе Git звучит так: “Как откатить git add перед коммитом?” Вы можете отменить действия над конкретным файлом или все внесенные изменения.
Решение, которое потребуется для этого, весьма простое. Чтобы откатить один файл, просто вызовите команду git reset :
Для отмены всех изменений запустите следующее:
Как откатить Git Merge
Объединение может привести к нежелаемым результатам. Но, как уже было сказано, вы можете с легкостью исправить свою ошибку! Давайте представим сценарий, в котором вы уже отправили изменения и осознали, что вам нужно отменить сделанное объединение.
Затем вернитесь к упомянутому коммиту, выполнив следующее:
Git также предлагает возможность предварительного просмотра, если вы хотите увидеть, что произойдет при объединении веток.
Как откатить Git Reset
Предлагаем суперкороткий способ отменить команду git reset:
Отмена последних коммитов в Git
Команду git reset можно использовать для отмены внесенных изменений:
x введите число. Например, если вы укажете
Другой метод — это команда git revert HEAD
Этот метод лучше всего работает в случае с общими публичными репозиториями.
Отмена Git Rebase
Допустим, вы выполнили команду git rebase в локальной ветке git и отправили ее в удаленную ветку. Следом вы поняли, что это не отвечает вашим ожиданиям, и захотели отменить сделанное.
Самый простой способ — найти главный коммит вашей ветки, запустив команду:
Заключение
Вот и все о том, как вы можете отменить наиболее часто используемые команды в Git. Хоть никакой традиционной команды отмены и нет, другие команды git могут помочь вам откатить то, что вы могли сделать по ошибке.
Как мне отменить ‘git add’ перед коммитом?
Я по ошибке добавил файлы в Git с помощью команды:
Вы можете отменить, git add прежде чем совершить с
который удалит его из текущего индекса (список «собирается быть зафиксирован»), ничего не меняя.
Ты можешь использовать
без какого-либо имени файла, чтобы удалить все должные изменения. Это может пригодиться, когда слишком много файлов для перечисления один за другим в разумные сроки.
«git reset» (без опций или параметров) используется для вывода ошибок, когда в вашей истории нет коммитов, но теперь он дает пустой индекс (для соответствия несуществующему коммиту вы даже не используете).
Когда я был новичком в этом, я впервые попробовал
(чтобы отменить все мои начальные добавления), только чтобы получить это (не очень) полезное сообщение:
Оказывается, это потому, что ссылка HEAD (ветвь?) Существует только после первого коммита. То есть, вы столкнетесь с той же проблемой новичка, что и я, если ваш рабочий процесс, такой как мой, будет выглядеть примерно так:
=> Черт, я не хотел добавлять все это.
google «отменить git add»
=> fatal: Не удалось разрешить ‘HEAD’ в качестве действительного ссылки.
Кроме того, выясняется, что в списке рассылки зафиксирована ошибка против этой бесполезности.
И что правильное решение было прямо там, в выводе статуса Git (который, да, я назвал «дерьмом»)
—cached Используйте эту опцию, чтобы удалять и удалять пути только из индекса. Файлы рабочего дерева, модифицированные или нет, останутся.
Я приступаю к использованию
Git расскажет вам, что ставится и т. Д., Включая инструкции о том, как выполнить расстановку:
Я нахожу, что Git довольно хорошо подталкивает меня делать правильные вещи в подобных ситуациях.
Примечание: последние версии Git (1.8.4.x) изменили это сообщение:
Для пояснения: git add перемещает изменения из текущего рабочего каталога в область подготовки (индекс).
git add простой псевдоним для git stage
Жалко нет git unstage ни git unadd команд. Соответствующий труднее угадать или запомнить, но он довольно очевиден:
Мы можем легко создать псевдоним для этого:
И наконец, у нас есть новые команды:
Лично я использую даже более короткие псевдонимы:
Обновить (далее я попытаюсь прояснить некоторую путаницу, которая может возникнуть из-за ответов с наибольшим количеством голосов):
Давайте вспомним сначала, что git add самом деле делает:
В свете этого вопрос несколько двусмысленный:
Но есть две оговорки.
Второе: имейте в git reset HEAD виду, что не может волшебным образом восстановить ранее кэшированное содержимое файла, оно просто ресинхронизирует его из HEAD. Если наши заблуждения git add переписал предыдущую подготовленную незафиксированную версию, мы не сможем ее восстановить. Вот почему, строго говоря, мы не можем отменить [*].
Объяснение:
Я создал шаги на изображении ниже для более подробной информации, включая все шаги, которые могут произойти в этих случаях:
Git, я хочу все отменить! Команды исправления допущенных ошибок
Git — удобная, но довольно сложная система. Сложность, прежде всего, в том, что по невнимательности можно допустить ошибку, которую затем сложно или вообще невозможно исправить. Документация Git предоставляет описание множества команд, которые дают возможность исправить ошибку.
Но вся штука в том, что для исправления проблемы нужно знать точное название команды. И здесь у нас возникает типичная проблема курицы и яйца. В этой статье рассказывается о командах, которые помогают решить проблемные ситуации.
Черт, я сделал что-то не то. Дайте мне волшебную машину времени!
Эта команда позволяет восстановить случайно удаленные данные, откатив слияние, после которого случилась неприятность. refLog используется ну очень часто — давайте скажем спасибо тому, что предложил добавить эту команду.
Я сделал коммит, но сразу же заметил ошибку, ее нужно исправить!
NB! Никогда не изменяйте коммиты в публичной ветке. Применяйте команду лишь для коммитов в локальной ветке, иначе у вас будут проблемы.
Хочу изменить сообщение последнего коммита!
Это просто… глупые требования к оформлению сообщений.
Я случайно закоммитил в мастер, хотя это должен был в новую ветку!
Если вы уже закоммитили в публичную ветку, команды не сработают. В этом случае поможет git reset HEAD@ <укажите количество коммитов, на которое нужно вернуться>вместо HEAD
Ну вот, я ошибочно закоммитил не в ту ветку
Есть еще один способ, который использует большое количество разработчиков — это cherry-pick.
Мне нужно запустить diff, но ничего не получается
Если вы уверены в том, что изменения были внесены, но diff пустой, вполне может быть, что вы индексировали изменения через add. Поэтому стоит использовать специальный флаг.
В общем, это не баг, а фича, но она чертовски неочевидная ¯\_(ツ)_/¯
Мне срочно нужно отменить коммит, который сделан 5 коммитов назад
К счастью, не нужно отказываться назад на 5 коммитов, занимаясь копипастом старых и новых файлов. Отменить все это можно при помощи revert.
Кроме того, откатить можно не только коммит, но и целый файл. Правда, это уже будут другие команды…
Отменить изменения в файле
А вот и они, эти другие команды.
Когда я впервые нашел эту возможность, это было КРУТО, КРУТО, К-Р-У-Т-О. Но если задуматься — почему именно checkout — лучший вариант для отмены изменений в файле? :shakes-fist-at-linus-torvalds:
Спасибо Eric V. За этот способ. И все жалобы по поводу использования sudo адресуйте ему.
Если вам нужно обнулить изменения и полностью откатиться до исходной версии, то можно попробовать сделать именно так. Но помните — эти команды разрушительны и необратимы.
Внимание! Эта статья не является исчерпывающим руководством. И да, есть и другие способы сделать то же самое, причем еще лучше. Но я пришел именно к этим вариантам методом проб и ошибок. Потом у меня появилась сумасшедшая идея поделиться находками. Берите это или уходите!
Даниил Пилипенко, директор центра подбора IT-специалистов SymbioWay и евангелист бэкенд-направления онлайн-университета Skillbox, дополнил перевод мнением о Git и его актуальности для разработчиков.
Git появился в 2005-ом году, и он далеко не сразу занял рынок. Помню, когда мы ещё в 2008-ом году в команде разработчиков внедряли SVN. И даже в 2012-ом одна близкая ко мне компания усиленно внедряла Mercurial. С годами для многих стало очевидным, что Git — это лучшая система контроля версий, и её теперь используют практически все разработчики.
Если вы начинающий разработчик и собираетесь устраиваться на работу, обязательно изучите Git! Вы должны знать, что такое система контроля версий и зачем она нужна, что такое коммит, ветка, как клонировать репозиторий и отправлять сделанные изменения на сервер, как получать новые изменения с сервера, как делать merge, какие бывают виды “reset”. Поначалу эта тема вам может показаться непонятной и сложной, но вам нужно лишь привыкнуть пользоваться Git, и отвыкнуть вы уже не сможете.
Как отменить ‘git add’ перед коммитом?
Я по ошибке добавил файлы в git с помощью команды:
На данный момент есть 48 ответов (некоторые удалены). Пожалуйста, не добавляйте новый, если у вас нет новой информации.
34 ответа
Вы можете отменить git add перед фиксацией с помощью
который удалит его из текущего индекса (список «about to be commit» ) без изменения чего-либо еще.
Вы можете использовать
без какого-либо имени файла, чтобы отключить все изменения. Это может пригодиться, когда слишком много файлов будут перечисляться один за другим в разумные сроки.
«git reset» (без параметров или параметров), используемых для у вас нет никаких фиксаций в вашей истории, но теперь это дает вам пустой индекс (для соответствия non- существующий commit вы даже не включены).
Когда я был новичком в этом, я впервые попробовал
(чтобы отменить все мои начальные добавления), только чтобы получить это (не очень) полезное сообщение:
Оказывается, это потому, что ссылка HEAD (ветвь?) Существует только после первого коммита. То есть вы столкнетесь с той же проблемой новичка, что и я, если ваш рабочий процесс, такой как у меня, будет выглядеть примерно так:
. много дерьмовых свитков.
=> Черт, я не хотел добавлять все это.
google «отменить git add»
=> fatal: Не удалось разрешить ‘HEAD’ в качестве действительного ссылки.
Кроме того, выясняется, что в списке рассылки зарегистрировано сообщение об ошибке.
И что правильное решение было прямо там, в выводе статуса Git (который, да, я назвал «дерьмом»)
—cached Используйте эту опцию, чтобы удалять и удалять пути только из индекса. Файлы рабочего дерева, модифицированные или нет, останутся.
Я приступаю к использованию
git расскажет вам, что устраивается и т.д., включая инструкции о том, как отключиться:
Я нахожу, что git делает довольно хорошую работу, подталкивая меня к тому, чтобы делать правильные вещи в таких ситуациях.
Примечание. Последние версии git (1.8.4.x) изменили это сообщение:
Чтобы уточнить: git add перемещает изменения из текущего рабочего каталога в промежуточную область (индекс).
Этот процесс называется промежуточным. Таким образом, самая естественная команда для смены изменений (измененных файлов) очевидна:
Мы можем легко создать псевдоним для этого:
И, наконец, у нас есть новые команды:
Лично я использую еще более короткие псевдонимы:
Обновление (далее я попытаюсь устранить некоторую путаницу, которая может возникнуть из ответов с наибольшим количеством голосов):
Строго говоря, и если я не ошибаюсь: нет.
Давайте сначала вспомним, что на самом деле делает git add :
Если ранее не отслеживался, git add добавляет его в кеш с его текущим содержимым.
Если уже отслежен, git add сохраняет текущий контент (снимок, версия) в кеш. В GIT это действие все еще называется добавлением (а не просто обновлением), потому что две разные версии (снимки) файла рассматриваются как два разных элемента: следовательно, мы действительно добавляем новый элемент в кэш, чтобы в конечном итоге совершено позже.
В свете этого вопрос несколько двусмысленный:
Я по ошибке добавил файлы с помощью команды.
Но есть две оговорки.
Второе: имейте в виду, что git reset HEAD не может волшебным образом восстановить ранее кэшированное содержимое файла, он просто повторно синхронизирует его с HEAD. Если наш неверный git add перезаписал предыдущую готовую незафиксированную версию, мы не сможем ее восстановить. Поэтому, строго говоря, мы не можем отменить [*].
будет «un- добавить» все, что вы добавили из текущего каталога рекурсивно





