Перейти к содержимому

Git rm cached что это

  • автор:

Есть ли отличие в командах rm —cached и reset HEAD?

Команда $git rm —cached удаляет файл из отслеживаемых (у файла появляется статус untracked) , команда $git reset HEAD удаляет файл из индекса, но оставляет файл в отслеживаемых, т.е используется чтобы удалить файл из включения в коммит при ошибочном git add . но оставить его под версионным контролем git. В этом разница.

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 1

v_decadence

Виктор @v_decadence

Первая удаляет файл из индекса, но оставляет его на диске. Обычно делают для игнорируемых файлов, которые случайно попали в индекс.
Вторая приводит индексное состояние файла к тому, которое было после последнего коммита (по сути сбросит проиндексированные изменения).

Ответ написан более трёх лет назад
Xeli @Xeli Автор вопроса
спасибо, теперь дошло
Xeli @Xeli Автор вопроса

Хм. Поторопился отметить решением, только что проверил эта команда НЕ приводит состояние файла к тому который был после последнего коммита. Только что добавил в тестовый файл пару строчек и проиндексировал, затем сбросил индексацию с помощью команды $git reset HEAD , файл просто ушел из индекса, сделанные изменения в нем остались, просто он сейчас показывается как не проиндексированный и все. Отмену изменений до последнего комита делают с помощью git checkout —

v_decadence

Виктор @v_decadence
Xeli: эм, я это и написал. В вопросе не было, как сбросить состояние файла. А так да.
Xeli @Xeli Автор вопроса

Victor: а теперь понял, в чем неточность или просто неясноcть в вашем ответе, команда $git rm —cached удаляет файл из отслеживаемых (у файла появляется статус untracked) , команда $git reset HEAD удаляет файл из индекса, но оставляет файл в отслеживаемых, т.е используется чтобы удалить файл из включения в коммит но оставить его под версионным контролем git. В этом разница.

Ваш ответ на вопрос

Войдите, чтобы написать ответ

linux

  • Linux
  • +1 ещё

Почему меняется разрешение arch linux?

  • 1 подписчик
  • 7 часов назад
  • 101 просмотр

A3.3 Приложение C: Команды Git — Основные команды

Всего несколько команд нужно для базового варианта использования Git для ведения истории изменений.

git add

Команда git add добавляет содержимое рабочего каталога в индекс (staging area) для последующего коммита. По умолчанию git commit использует лишь этот индекс, так что вы можете использовать git add для сборки слепка вашего следующего коммита.

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

Знакомство с этой командой происходит в разделе Отслеживание новых файлов главы 2.

О том как использовать git add для разрешения конфликтов слияния написано в разделе Основные конфликты слияния главы 3.

В разделе Интерактивное индексирование главы 7 показано как использовать git add для добавления в индекс лишь отдельных частей изменённого файла.

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

git status

Команда git status показывает состояния файлов в рабочем каталоге и индексе: какие файлы изменены, но не добавлены в индекс; какие ожидают коммита в индексе. Вдобавок к этому выводятся подсказки о том, как изменить состояние файлов.

Мы познакомили вас с этой командой в разделе Определение состояния файлов главы 2, разобрали стандартный и упрощённый формат вывода. И хотя мы использовали git status повсеместно в этой книге, практически все варианты использования покрыты в указанной главе.

git diff

Команда git diff используется для вычисления разницы между любыми двумя Git деревьями. Это может быть разница между вашей рабочей копией и индексом (собственно git diff ), разница между индексом и последним коммитом ( git diff —staged ), или между любыми двумя коммитами ( git diff master branchB ).

Мы познакомили вас с основами этой команды в разделе Просмотр индексированных и неиндексированных изменений главы 2, где показали как посмотреть какие изменения уже добавлены в индекс, а какие — ещё нет.

О том как использовать эту команду для проверки на проблемы с пробелами с помощью аргумента —check можно почитать в разделе Правила создания коммитов главы 5.

Мы показали вам как эффективно сравнивать ветки используя синтаксис git diff A…​B в разделе Определение применяемых изменений главы 5.

В разделе Продвинутое слияние главы 7 показано использование опции -w для скрытия различий в пробельных символах, а также рассказано как сравнивать конфликтующие изменения с опциями —theirs , —ours и —base .

Использование этой команды с опцией —submodule для сравнения изменений в подмодулях показано в разделе Начало работы с подмодулями главы 7.

git difftool

Команда git difftool просто запускает внешнюю утилиту сравнения для показа различий в двух деревьях, на случай если вы хотите использовать что-либо отличное от встроенного просмотрщика git diff .

Мы лишь вкратце упомянули о ней в разделе Просмотр индексированных и неиндексированных изменений главы 2.

git commit

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

Вы познакомились с основами модели коммитов в разделе Коммит изменений главы 2. Там же мы продемонстрировали использование опций -a для добавления всех изменений в индекс без использования git add , что может быть удобным в повседневном использовании, и -m для передачи сообщения коммита без запуска полноценного редактора.

В разделе Операции отмены главы 2 мы рассказали об опции —amend , используемой для изменения последнего совершённого коммита.

В разделе О ветвлении в двух словах главы 3 мы более подробно познакомились с тем, что делает команда git commit и почему она делает это именно так.

Мы показали вам как подписывать ваши коммиты, используя опцию -S в разделе Подпись коммитов главы 7.

И наконец мы заглянули внутрь команды git commit в разделе Объекты коммитов главы 10 и узнали что она делает за кулисами.

git reset

Команда git reset , как можно догадаться из названия, используется в основном для отмены изменений. Она изменяет указатель HEAD и, опционально, состояние индекса. Также эта команда может изменить файлы в рабочем каталоге при использовании параметра —hard , что может привести к потере наработок при неправильном использовании, так что убедитесь в серьёзности своих намерений прежде чем использовать его.

Мы рассказали об основах использования git reset в разделе Отмена индексации файла главы 2, где эта команда использовалась для удаления файла из индекса, добавленного туда с помощью git add .

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

Мы использовали git reset —hard чтобы отменить слияние в разделе Прерывание слияния главы 7, там же было продемонстрировано использование команды git merge —abort для этих целей, которая работает как обёртка над git reset .

git rm

Команда git rm используется в Git для удаления файлов из индекса и рабочей копии. Она похожа на git add с тем лишь исключением, что она удаляет, а не добавляет файлы для следующего коммита.

Мы немного разобрались с этой командой в разделе Удаление файлов главы 2, показали как удалять файлы из рабочего каталога и индекса и только из индекса, используя флаг —cached .

Ещё один вариант использования git rm приведён в разделе Удаление объектов главы 10, где мы вкратце объяснили как использовать опцию —ignore-unmatch при выполнении git filter-branch , которая подавляет ошибки удаления несуществующих файлов. Это может быть полезно для автоматически выполняемых скриптов.

git mv

Команда git mv — это всего лишь удобный способ переместить файл, а затем выполнить git add для нового файла и git rm для старого.

Мы лишь вкратце упомянули эту команду в разделе Перемещение файлов главы 2.

git clean

Команда git clean используется для удаления мусора из рабочего каталога. Это могут быть результаты сборки проекта или файлы конфликтов слияний.

Мы рассмотрели множество опций и сценариев использования этой команды в разделе Очистка рабочего каталога главы 7.

git rm и git mv — удаление и переименование в Git

Еще один важный практический вопрос при работе с Git — это операции с файлами.

В частности, это операции удаления и переименования файлов. В системе Git имеются специальные команды, которые очень похожи на консольные команды

в Linux/Mac OS. Но для Git они выглядят несколько иначе:

git rm

— для удаления файлов и

git mv

— для переименования файлов. Ниже я рассмотрю обе эти комадны более подробно.

Команда git rm

Для удаления файлов в системе Git, как уже упоминалось выше, имеется специальная команда

git rm

. Ее отличие от обычной консольной команды
(в том же Linux) заключается в особенности самой системы Git.

Как хорошо известно, в системе Git файл может одновременно существовать в трех ипостасях: в области “Working Directory”, в области “Staging Area”, в области “Repository”. Удаление файла из области “Working Directory” не приведет к его удалению из областей “Staging Area” и “Repository”.

Поэтому, чтобы удалить файл, нужно (в идеале) выполнить три команды подряд для удаления файла из Рабочей области “Working Directory”, затем из области индекса “Staging Area” и потом из области репозитория “Repository”:

Команда git rm - удаление файлов в Git

index.html

с помощью команды

git mv

Команда git mv - переименование файла в Git

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

Добавление, удаление и отслеживание изменений в Git (git add, git status, git remove)

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

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

Эта статья полностью посвящена работе с локальным репозиторием и отслеживаемыми / не отслеживаемыми изменениями. Мы будем охватывать следующие команды git:

  • Git add
  • Git status
  • Git remove

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

После этого репозиторий git будет выглядеть следующим образом:

Добавление и отслеживание изменений в Git

Git Status

Git Status — это еще одна обязательная команда, которая возвращает информацию о текущем состоянии репозитория. Например, список измененных файлов, список отслеживаемых изменений на промежуточном этапе, неотслеживаемые изменения на локальном уровне и информация о текущей ветви и коммитах.

  • Промежуточная область: Git имеет концепцию промежуточной области, где отслеживаются все обновления/изменения. Здесь хранятся изменения, которые вы хотели бы зафиксировать. Изменения могут представлять собой одну строку, файлы или части файлов.
  • Неотслеживаемые изменения: Изменения/файлы в локальном каталоге, которые не перемещаются на промежуточную стадию, называются неотслеживаемыми изменениями.
  • Отслеживаемые изменения: Изменения / файлы на промежуточном этапе называются отслеживаемыми изменениями.

Git Status

1) Теперь откройте командную строку и перейдите в репозиторий git

 введите git status в командной строке.

2) Просто введите git status в командной строке.

branch master: говорит о том, что рабочее дерево является главной ветвью.

no commits yet: дает информацию о коммитах, на данный момент их еще нет.

Untracked files: говорит о том, что Git видит файлы, но еще не начал отслеживать изменения и отметил их красным цветом.

Status messages: дает соответствующие инструкции для промежуточных / нестагнирующих файлов.

Git add

Команда git add добавляет изменение в рабочий каталог в промежуточную область. Она сообщает Git, что в проекте есть несколько обновлений, которые пользователь хочет зафиксировать. Здесь следует отметить, что git add не влияет на удаленный репозиторий, так как изменения фактически не записываются до тех пор, пока вы не выполните git commit.

1) Давайте просто начнем с добавления одного файла к заявке. Чтобы использовать команду git add, просто введите git add filename. Слово filename здесь относится к имени файла, который вы редактировали, например CustomerData_IND.txt. Кроме того, используйте команду git status, чтобы увидеть, что git теперь может рассказать нам о состоянии репозитория.

git add

Changes to be comitted: здесь отображается информация о отслеживаемых файлах, хранящихся на промежуточном этапе. Это тот самый, который мы добавили с помощью команды git add.

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

Команда Git Remove

Команда git rm удаляет отслеживаемые изменения из промежуточной области. Это говорит Git, что обновления, которые были перенесены на промежуточную стадию ранее с помощью команды git add, не готовы к фиксации. Поэтому при выполнении этой команды git просто удаляет изменения из промежуточного состояния. Но изменения все еще существуют в локальном репозитории. Если вы внимательно посмотрите на выходные данные приведенного выше изображения раздела 1. В этом git дает пользователю предложение о том, что отслеживаемый файл на промежуточной стадии может быть удален с помощью git rm — —

Чтобы практиковать эту команду, давайте попробуем удалить тот же CustomerData_IND.txt, который был добавлен ранее.

1) чтобы удалить нужный файл, введите git rm — -cached CustomerData_IND.txt. Кроме того, используйте команду git status для проверки состояния репозитория.

git rm

Untracked files: CustomerData_IND.txt файл вернулся к списку игнорируемых изменения.

Добавление различных измененных файлов в промежуточную среду

Выше мы просто добавили один файл в staging. Что делать, если там будет несколько файлов для добавления. Это может быть легко достигнуто с помощью git add .

Чтобы добавить несколько файлов, введите

git add CustomerData_IND.txt CustomerData_UK.txt

git add </p>
<p> .» width=»837″ height=»370″ /></p>
<h3>Удаление различных файлов из промежуточного состояния</h3>
<p>Как вы можете добавить несколько файлов в промежуточную среду, так же несколько файлов могут быть удалены и из промежуточной среды. команда для удаления нескольких файлов</p>
<p>Чтобы удалить несколько файлов, введите</p>
<pre>git rm --cached CustomerData_IND.txt CustomerData_UK.txt</pre>
<p><img decoding=

Все измененные файлы теперь перемещаются в промежуточный режим.

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

git pull

В последнем уроке мы познакомились с командой Git fetch и Read more

Git Fetch и Git Merge

В одной из последних статей мы узнали о команде Git Read more

Мы уже знаем, как вносить изменения в локальное хранилище и Read more

Git Push

Команда git push при выполнении перемещает изменения, внесенные пользователем на Read more

Что такое git Clone и как клонировать репозиторий?

«Клонирование» означает создание идентичных особей естественным или искусственным путем. Клонирование Read more

Git Fork

Сегодня мы узнаем, как скопировать чужой репозиторий в наш аккаунт Read more

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *