Git добавить в индекс несколько файлов

Обновлено: 06.07.2024

это будет мое первое использование git. Я добавил новые файлы ( много ) в папку/проект ( локальный репозиторий git).

Я прошел через онлайн-уроки и форумы и вижу, что могу сделать

поэтому я иду в базовую папку репозитория и делаю

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

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

чтобы добавить все внесенные вами изменения:

вы можете объединить эти шаги следующим образом:

git commit -a -m "MY MESSAGE HERE"

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

git push origin master

возможно, вам придется ввести свое имя пользователя/пароль для github после этого. вот!--22--> хороший праймер по использованию git. Немного старомодно, но это хорошо покрывает то, что происходит.

использовать git add команда, за которой следует список имен файлов, разделенных пробелом, например

вы также можете выбрать несколько файлов, как это

добавить все файлы в указанной папке. Очень полезно, когда вы редактировать кучу файлов, но вы просто хотите зафиксировать некоторые из них.

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

если вы нажмете 2 затем enter вы получите список доступных файлов, которые будут добавлены:

теперь вам просто нужно вставить количество файлов, которые вы хотите добавить, поэтому, если мы хотим добавить TODO и index.html мы типа 1,2

видишь * до номера? это означает, что файл был добавлен.

теперь представьте, что у вас есть 7 файлов и вы хотите добавить их все, кроме 7-го? Конечно, мы могли бы напечатать 1,2,3,4,5,6 но представьте, что вместо 7 у нас есть 16, что было бы довольно громоздко, хорошо, что нам не нужно вводить их все, потому что мы можем использовать диапазоны,набрав 1-6

мы даже можем использовать несколько диапазонов, поэтому, если мы хотим от 1 до 3 и от 5 до 7, мы вводим 1-3, 5-7 :

мы можно также использовать это для unstage файлов, если мы вводим -number , поэтому, если бы мы хотели unstage файл номер 1 мы бы ввести -1 :

и, как вы можете себе представить, мы также можем unstage ряд файлов, так что если мы наберем -range все файлы в этом диапазоне будут не загружены. Если бы мы хотели распаковать все файлы от 5 до 7, мы бы набрали -5-7 :

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

остерегайтесь не ставить пробелы между , .

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

или если вы хотите поставить все

делая это, вы говорите git, какие файлы вы хотите в своем следующем коммите. Вы тут:

где origin - это ветвь удаленного репозитория, а master-ваша локальная ветвь репозитория.

использовать git commit -a -m "my first commit message" , чтобы указать комментарий к коммиту в командной строке (с помощью этого не запустится редактор)

установить EDITOR переменная окружения для редактора, с которым вы знакомы

Если вы хотите, чтобы этап и зафиксировать все ваши файлы на Github сделать следующее;

git add -A
git commit -m "commit message"
git push origin master

Есть разные способы добавить все измененные файлы в индекс репозитория Git. В чем разница и зачем столько способов?


31.9k 22 22 золотых знака 119 119 серебряных знаков 206 206 бронзовых знаков

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

M - (modified) отслеживаемые, изменились с прошлого коммита, еще не добавлены
D - (deleted) отслеживаемые, удалены после прошлого коммита, еще не добавлены
? - (untracked) неотслеживаемые, не запрещены к добавлению
! - (ignored) неотслеживаемые, запрещены к добавлению (например, в .gitignore )

Первое различие — в том, что . — это путь (аргумент), а всё остальное — параметры. Те и другие не исключают друг друга и возможны их сочетания.

Путь . обозначает текущую директорию, т.е. ту, в которой была запущена команда.

Начиная с Git версии 2.0, поведение команды add приведено в соответствие с поведением commit и других комманд. Теперь . обозначает не всю рабочую область (working tree), а текущий путь в этой области.

Таким образом, если вы выполняете команду add не в корневой директории проекта (той, где лежит .git/ ), то будет обработано содержимое только текущей директории.

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

Если не указан никакой путь к добавляемым файлам, то большинство команд работает во всей рабочей области, а git add и git add --no-all просто не работают.

сводная таблица

Git версии 2.0+ просматривает текущую папку и добавляет файлы M , D , ? .
Git версии 1.х просматривает всю рабочую область и добавляет файлы M , D .

Если '*' дается в кавычках, то обрабатывать его будет Git и это эквивалентно git add . . Исключение: из-под cmd.exe git add '*' не сработает, используйте git add . или git add * .

Эта команда в Git v. 2.0+ работает как git add . в Git v. 1.x, то есть добавляет измененные и новые файлы M , ? во всей рабочей области. Для этой команды обязательно указывать путь.

Git обновляет (update) статус уже отслеживаемых файлов т.е. M , D .

Эти варианты эквивалентны и добавляют M , D , ? .

Без точки — из всей рабочей области:

git add -A = git add -A :/ = git add :/ + git add -u

С точкой — только текущий путь:

git add -A . = git add . + git add -u .

Этот синтаксис лучше не использовать, и вот почему:

При этой команде shell (или bash или другая командная оболочка) просматривает рабочую область и отдает Git список файлов на добавление. Система сработает таким образом, что будут найдены абсолютно все не-скрытые файлы, находящиеся в заданном корне. Вы можете посмотреть на этот список, выполнив echo * . ( Исключение: из-под cmd.exe git add * работает так же как git add '*' на shell/bash. )

Произойдет следующее (здесь мы видим сразу несколько причин не использовать add * ):

Разнообразие параметров ( -u , -A , --no-all ) нужно для того, чтобы можно было добавлять разные группы файлов. Конкретно --no-all . было добавлено для того, чтобы реализовывать старое поведение add . в версиях 1.х.

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

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

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

Первоначальная настройка Git

Работа с любой программой всегда начинается с её настройки. Git можно настроить один раз и менять что-то только по мере необходимости.

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

Установка имени пользователя

git config --global user.name "User Name"

Установка текстового редактора, в котором будут открываться файлы для решения конфликтов.

Установка текстового редактора

git config --global core.editor editor

С помощью команды git config --list можно посмотреть список всех установленных настроек.

Список всех установленных настроек

Клонирование репозитория

Для клонирования репозитория нужно ввести команду git clone и указать его адрес. Репозиторий клонируется в текущую выбранную папку в консоли.

Клонирования репозитория

Работа с изменениями

Любая работа с изменениями начинается с получения последней версии удалённого репозитория. Получить последнюю версию можно с помощью команды git pull . Будьте внимательны, вызов этой команды сотрёт все незафиксированные изменения.

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

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

Просмотр статуса файлов

Чтобы добавить отслеживание новых файлов, необходимо использовать команду git add <filename> <filename> для добавления нескольких файлов по имени.

Добавить отслеживание новых файлов

В случае если у вас много файлов для добавления, можно воспользоваться командой git add . , которая добавляет отслеживание для всех новых файлов из текущей директории. А команда git add -A добавляет ещё и удалённые файлы, не только из текущей директории, но и из всего локального репозитория.

Помимо добавления файлов, их также необходимо удалять. Для этого существует команда git rm <filename> <filename> , которая удаляет файлы по их имени.

Удаление файлов

После того как добавлены все новые и удалены старые файлы, можно делать фиксацию изменений. Фиксация изменений или коммит, очень важна, так как до выполнения этой команды ваши локальные изменения никуда не запишутся. Чтобы добавить коммит, необходимо ввести команду git commit -m "Комментарий к коммиту" .

Фиксация изменений или коммит

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

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

По умолчанию, эта команда удаляет только из индекса. А команда git reset --hard безвозвратно удаляет незафиксированные текущие изменения из локального репозитория и из индекса.

Отправка зафиксированных изменений

Работа с ветками

Работая с Git, приходится постоянно создавать и перемещаться по веткам.

Команда git checkout -b branch-name создаст ветку с указанным именем и автоматически переключится на неё.

Создание ветки и переключение на неё

Отправка ветки на сервер

Аналогично можно забрать себе на компьютер ветку с удалённого репозитория командой git checkout origin/branch-name -b branch-name .

Чтобы не хранить названия веток в памяти или не искать названия веток, существуют две специальные команды, которые позволяют посмотреть все существующие ветки локального репозитория git branch или все существующие ветки удалённого репозитория git branch -r .

Посмотреть все существующие ветки

Переключиться на любую локальную ветку можно с помощью команды git checkout branch-name .

Переключение на локальную ветку

Прочее

После работы в репозитории могут оставаться различные ненужные, неотслеживаемые файлы и прочий мусор. Чтобы удалить всё лишнее, воспользуйтесь командой git clean -f -d .

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

  • git add - добавление файлов в стадию ожидания;
  • git commit - добавление файлов в локальное хранилище;
  • git rm - отмена действий.

Получение статуса

Для отслеживания статуса всех файлов необходимо использовать команду git status .

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

Добавление файлов

Перед добавлением файлов в локальное хранилище их необходимо подготовить. Для этого используется команда git add .

Через команду можно указать какие файлы необходимо добавить. Можно добавить всё, прописав git add . или git add -A , а также можно добавлять лишь некоторые файлы. Для их выбора можно воспользоваться различными командами:


Коммит

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

Отмена действий

Если вы добавили файлы в стадию ожидания, но передумали и не хотите добавлять некоторые из них, то вам пригодиться команда git rm -cached "file" .

В ней укажите какой файл необходимо «выкинуть» из стадии ожидания на коммит.

Игнорирование файлов

Git имеет встроенную функцию .gitignore, с помощью которой мы можем предотвратить случайное попадание в git add ненужных файлов, папок и директорий. Очень часто в такой перечень попадают следующие данные:

  • Логи;
  • Артефакты систем сборки;
  • Папки node_modules в проектах node.js;
  • Папки, созданные IDE, например, Netbeans или IntelliJ;
  • Разнообразные заметки разработчика.

Работает функция .gitignore очень просто:

  • Создаем вручную файл под названием .gitignore и сохраняем его в директорию проекта.
  • Внутри файла перечисляем названия файлов/папок, которые нужно игнорировать, каждое с новой строки.
  • Файл .gitignore добавляем, коммитим и отправляем на сервер, как любой другой файл в проекте. Пример исключения перечисленных выше файлов выглядит так:

Слэш обозначает игнорирование директорий и всего их содержимого, звездочка – шаблон.

Задание к уроку

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

Большое задание по курсу

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

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