Концепция отслеживания git и git
Когда вы изменяете файл в своем рабочем каталоге, git говорит вам использовать "git add" для этапа.
Когда вы добавляете новый файл в рабочий каталог, git говорит вам использовать "git add" для начала отслеживания.
Я немного запутался в этих двух концепциях, потому что предположил, что отслеживание файла для изменений отличается от его размещения для фиксации
Ответы
Ответ 1
Git имеет понятие, известное как "индекс". Чтобы создать новый коммит, вы заполняете индекс содержимым, которое вы хотели бы иметь в следующем коммите. Это означает, что вы должны явно указать Git, какие изменения вы хотите отобразить в следующем коммите, используя git add
. (git add -p
добавить только отдельные куски)
Для Git не имеет значения, обновляете ли вы только файл ( "сценические изменения" ) или добавляете полный контент нового файла ( "начать отслеживание файла" ) - оба раза, все что Git index видит добавление новых изменений
Ответ 2
Git по существу имеет 4 основных статуса для файлов в вашем локальном репо:
- untrecked: Файл новый, Git ничего не знает об этом. Если вы
git add <file>
, это будет:
- поставлено: Теперь Git знает файл (отслеживается), но также делает его частью следующей команды commit (называемой индексом). Если вы
git commit
, это будет:
- без изменений: Файл не изменился со времени последнего коммита. Если вы измените его, оно будет выглядеть следующим образом:
- неустановлено: Изменено, но не является частью следующего фиксации. Вы можете выполнить его снова с помощью
git add
Как вы можете видеть, git add
будет отслеживать необработанные файлы и stage любой файл.
Кроме того: вы можете отформатировать файл с git rm --cached filename
без указания файла и отключить поэтапный файл с помощью git reset HEAD <file>
Ответ 3
Когда вы добавляете файл для начала отслеживания, он также ставит его содержимое.
Если вы хотите добавить файл для отслеживания без его постановки, вы можете использовать
git add -N
Ответ 4
Оба из шагов git add
, которые вы идентифицируете, делают практически одно и то же, они просто имеют разные объяснения из-за их маршрута прибытия.
git add
просто сообщает git, что предоставленный файл - это файл, который вы хотите иметь в своей точной текущей форме (ее содержимом) в своем репозитории управления версиями. В этот момент git возьмет снимок файла (и он сохранит заметку в своем индексе), чтобы он был готов к тому, что все ваши изменения в ваших файлах были готовы и добавлены (т.е. объединены в промежуточной области), для вашего git commit
(с соответствующим сообщением; -).
Как только git рассказывается об этом файле (например, @avh -N
), он будет замечать (отслеживать) изменения в файле под видом различных команд (например, git status
). Таким образом, позже вы должны явно указать git, когда вы больше не хотите, чтобы файл отслеживался (git rm <file>
), и вы можете продолжить редактирование файла (локально) после того, как у вас есть add
версия, которая будет в фиксации. Почти очевидно (или, возможно, нет), вы можете git add
файл много раз, прежде чем совершить окончательную версию.