Как исправить уже «добавленные в индекс» файлы в git? - PullRequest
0 голосов
/ 12 марта 2019

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

  1. git init
  2. git add index.html

Допустим,Я хочу зафиксировать некоторые изменения в моем index.html.Как это сделать?

1 Ответ

1 голос
/ 12 марта 2019

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

Git хранит коммиты как снимки. Каждый коммит имеет копию всех ваших файлов - всех файлов, которые были в индексе, то есть на момент запуска git commit. Они хранятся в специальном, замороженном / только для чтения, сжатом формате Git-only. Это хорошо для архивов, но бесполезно для выполнения работы. Помните это для следующих нескольких битов.

Когда вы говорите Git git checkout master, вы говорите Git: Найдите коммит, обозначенный именем master. Скопируйте эти файлы в свой индекс, затем скопируйте их из своего индекса в мое рабочее дерево, чтобы я мог видеть файлы и работать с ними. В вашем рабочем дереве файлы нормальные. Вы можете использовать их. Ваш компьютер может использовать их. Вы можете изменить их, переименовать, удалить, что хотите.

Когда вы говорите Git git add <em>somefile</em>, вы говорите Git: Скопируйте файл somefile из моего рабочего дерева, где я могу его увидеть и обработать, в ваш индекс, чтобы он был готов к перейдите к следующему коммиту. Копия, которая находится в индексе, находится в специальном формате Git-only, но - пока вы не подтвердите его в любом случае - это не заморожено . Это просто готово заморозить .

Когда вы говорите Git git rm <em>somefile</em>, вы говорите Git: Удалите файл somefile из моего индекса и из моего рабочего дерева. Если вы используете --cached, как в git rm --cached <em>somefile</em>, вы говорите Git удалить его из индекса, но оставить его в рабочем дереве в покое.

Когда вы говорите Git git commit, вы говорите Git: Возьмите все файлы, которые есть в индексе, прямо сейчас. Заморозьте их в новый коммит. Что бы ни было в индексе , затем , это то, что находится в вашем новом коммите. Что бы не было в индексе, это не в вашем новом коммите. Итак, ваш новый коммит - это снимок. Индекс содержит предложенный следующий снимок . Вы можете изменить его так, как вам угодно, в любое время: git add копирует в него файлы, заменяя старый или создавая новый, в зависимости от того, было ли там ранее это имя. Расположите - или «stage», отсюда и название «staging area» - файлы по своему усмотрению, затем используйте git commit, чтобы заморозить их в моментальный снимок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...