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

Обновлено: 21.11.2024

Команда git add [--all|-A] выглядит идентичной команде git add . . Это правильно? Если нет, то чем они отличаются?

12 ответов 12

Этот ответ относится только к Git версии 1.x. Для Git версии 2.x см. другие ответы.

Обзор:

git add -A выполняет все изменения

git добавить . размещает новые файлы и модификации без удаления (в текущем каталоге и его подкаталогах).

git add -u выполняет модификации и удаления без добавления новых файлов

Подробности:

git add -A эквивалентен git add .; git добавить -u .

Важный момент о git add . заключается в том, что он просматривает рабочее дерево и добавляет все эти пути к поэтапным изменениям, если они либо изменены, либо являются новыми и не игнорируются, он не выполняет никаких действий «rm».

git add -u просматривает все уже отслеженные файлы и вносит изменения в эти файлы, если они отличаются или были удалены. Он не добавляет новые файлы, а только вносит изменения в уже отслеженные файлы.

git add -A — удобный способ сделать и то, и другое.

Вы можете проверить различия примерно так (обратите внимание, что для Git версии 2.x ваши выходные данные для git add . git status будут другими):

Для информации, в более новых версиях git git add -u стал git add -u :/ с последним параметром, являющимся путем, позволяющим вам -u определенные каталоги, :/ обрабатывает все дерево.

@CharlesBailey, Git действительно любит усложнять вещи без уважительной причины. Есть ли реальный вариант использования, когда кому-то конкретно понадобится git add -u или git add . и, делая это, это облегчает его жизнь даже после учета дополнительного умственного налога, добавленного для обеспечения отсутствия проблем с синхронизацией? Интересно, почему Git не разделяет add -u на две отдельные команды add -u1 и add-u2, где одна работает с файлами, начинающимися с цифр, а другая — с файлами, начинающимися с нецифр?

Git версии 1.x

< /tr>
Команда Новые файлы Измененные файлы Удаленные файлы Описание
git add -A ✔️ ✔️ ✔️ Подготовить все (новые, измененные, удаленные) файлы
git add . ✔️ ✔️ Помещать новые и измененные файлы только в текущую папку
git add -u ✔️ ✔️ Только измененные и удаленные файлы

Git версии 2.x

< /tr>

Флаги полной формы:

  • git add -A эквивалентен git add --all
  • git add -u эквивалентен git add --update

Дополнительная литература:

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

@Gokul: Согласно этому сообщению, вы можете использовать git diff-files -z --diff-filter=M --name-only | xargs -0 git add для добавления только измененных файлов, но не новых файлов или удалений.

Это не совсем так, так как git add . добавляет только новые файлы, которые находятся на текущем пути. т.е. если у вас есть новый каталог ../foo , git add -A подготовит его, git add . не будет.

git add

теперь то же самое, что и "git add -A

", так что "git add dir/" заметит пути, которые вы удалили из каталога, и запишет удаление.
В старых версиях Git «git add

» игнорировал удаления.

Вы можете сказать «git add --ignore-removal

», чтобы добавить только добавленные или измененные пути в

, если вы действительно этого хотите.

git add -A похож на git add :/ (добавить все из верхней папки репозитория git).
Обратите внимание, что git 2.7 (ноябрь 2015 г.) позволит вам добавить папку с именем " : "!
См. коммит 29abb33 (25 октября 2015 г.), автор Junio ​​C Hamano ( gitster ).

Обратите внимание, что начиная с git 2.0 (Q1 или Q2 2014), говоря о git add . (текущий путь в рабочем дереве), вы должны использовать ' . ' в других командах git add также.

" git add -A . " эквивалентно " git add .; git add -u . "

(Обратите внимание на дополнительный ' . ' для git add -A и git add -u )

Поскольку git add -A или git add -u будут работать (начиная с git 2.0) на всем рабочем дереве, а не только на текущем пути.

Эти команды будут работать со всем деревом в Git 2.0 для обеспечения согласованности с " git commit -a " и другими командами. Поскольку не будет механизма, заставляющего "git add -u" вести себя как "git add -u.", это важно для тех, кто привык "git add -u" (без указания пути) обновлять индекс только для путей. в текущем подкаталоге, чтобы начать тренировать свои пальцы, чтобы явно сказать " git add -u " , когда они имеют в виду это до появления Git 2.0.

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

Если вы хотите, чтобы Git отслеживал файл в репозитории, вы должны явно добавить его в репозиторий, что может стать немного громоздким, если у вас много файлов. Другой вариант — добавить/поместить все файлы в репозиторий, что намного быстрее. Как правило, лучше добавлять каждый вручную, чтобы избежать промежуточных файлов, которые вам не нужны, но если вы знаете, что делаете, это может сэкономить некоторое время.

Как и все в Git, это можно сделать несколькими способами. Поведение и доступные параметры также меняются в зависимости от версии Git, которую вы используете, поэтому в этой статье мы сосредоточимся на Git 2.x, который должен быть установлен на большинстве компьютеров.

Подготовить все файлы

С помощью этой команды будут помещены все файлы в вашем репозитории, включая все новые, измененные и удаленные файлы. Команда выглядит следующим образом:

Опция -A является сокращением от --all .

Еще один способ сделать это — опустить параметр -A и просто указать точку для обозначения всех файлов в текущем рабочем каталоге:

Примечание. Команда git add . только промежуточные файлы в текущем каталоге, а не в каких-либо подкаталогах, тогда как git add -A также будет публиковать файлы в подкаталогах.

Подготовка всех новых и измененных файлов

Предыдущие команды также удалят файл из репозитория, если он больше не существует в проекте. Если это нежелательное поведение в вашем случае, вам следует использовать параметр --ignore-removal, который будет размещать только новые и измененные файлы:

Подготовить все измененные и удаленные файлы

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

Такое поведение достигается с помощью флага -u, который является сокращением для параметра --update:

Добавление файлов по шаблону

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

Так, например, если вы хотите добавить все файлы Python в текущем каталоге в репозиторий, вы должны использовать следующую команду:

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

Итак, в другом примере эта команда добавит все файлы JavaScript, в том числе в подкаталогах:

При работе с репозиторием Bitbucket Cloud вам необходимо знать, как добавлять новые файлы и редактировать существующие файлы. Оттуда вы зафиксируете свои изменения в репозитории, что позволит вам (или кому-либо еще) ссылаться на эту точку в репозитории.

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

Редактировать локальные исходные файлы

Если у вас нет локальной копии репозитория на вашем компьютере или в локальной сети, сначала см. раздел Клонирование репозитория, чтобы получить клон кода.

Добавить и зафиксировать с помощью Git

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

Получите представление о следующей команде git.

Дополнительную информацию см. в документации по Git.

Чтобы добавить и зафиксировать файлы в репозитории Git

Создавайте новые файлы или редактируйте существующие файлы в локальном каталоге проекта.

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

Введите git commit -m ' ' в командной строке, чтобы зафиксировать новые файлы/изменения в локальном репозитории. Для , вы можете ввести все, что описывает изменения, которые вы фиксируете.

1 2 3 4 5 6 7 8 $ git commit -m 'Первоначальная фиксация всех файлов в хранилище' [main 2f41d64] добавление изображений 6 измененных файлов, 1 вставка (+), 1 удаление (-) режим создания 100644 African Daisy.jpg создать режим 100644 Dandelion.jpg создать режим 100644 Ixia.jpg создать режим 100644 Spiked.jpg создать режим 100644 Sunflower.jpg

Редактировать файлы онлайн

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

Вот как выглядит файл в режиме редактирования:

А. Заголовок файла — отображает владельца репозитория (рабочее пространство), проект, в котором он находится, и имя репозитория.

Б. Параметры файла — щелкните «Различия», чтобы просмотреть различия файла, или «История», чтобы просмотреть историю его фиксации, чтобы выйти из режима редактирования. Если вы уже вносили изменения, вы получите сообщение с вопросом, хотите ли вы отменить изменения, чтобы продолжить.

С. Варианты редактирования:

Режим синтаксиса — выберите подходящий тип файла для вашего файла.

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

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

Перенос строк. Обновите, если хотите, чтобы строки в вашем файле переносились.

Д. Предварительный просмотр/фиксация:

Просмотр различий — показывает различия между вашими изменениями и самой последней версией этого файла в Bitbucket. После просмотра различий нажмите «Редактировать файл», чтобы вернуться в режим редактирования.

Зафиксировать — отображает диалоговое окно «Зафиксировать изменения», в котором вы можете ввести сообщение о фиксации и сохранить его, нажав «Зафиксировать».
Если у вас есть доступ для записи в репозиторий, вы можете зафиксировать непосредственно в репозиторий или выбрать «Создать запрос на вытягивание» для этого. change.
Если у вас нет прав на запись, Bitbucket автоматически создает ответвление и запрос на извлечение, который указывает на исходный репозиторий.

Вот как редактировать файл из Bitbucket:

В репозитории нажмите «Источник» на левой панели навигации.

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

Нажмите кнопку "Изменить", чтобы открыть режим редактирования.

Внесите необходимые изменения и любые другие обновления в файл.

Нажмите "Подтвердить".

Обновите сообщение о коммите, если хотите, и снова нажмите Commit.

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

git add — важная команда, без нее ни один git commit ничего не сделает. Иногда git add может иметь репутацию ненужного шага в разработке. Но на самом деле git add — важный и мощный инструмент. git add позволяет вам формировать историю, не меняя того, как вы работаете.

Когда вы используете git add ?

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

Что делает Git Add?

git add [имя файла] выбирает этот файл и перемещает его в промежуточную область, помечая его для включения в следующую фиксацию. Вы можете выбрать все файлы, каталог, определенные файлы или даже определенные части файла для подготовки и фиксации.

Это означает, что если вы git добавляете удаленный файл, удаление готовится к фиксации. Язык «добавить», когда вы на самом деле «удаляете», может сбивать с толку. Если вы думаете или используете git stage вместо git add , реальность происходящего может быть более ясной.

git add и git commit идут рука об руку. Они не работают, когда они не используются вместе. И они оба работают лучше всего, когда используются с учетом их совместной функциональности.

Как использовать git add

Общее использование и параметры git add

Вы можете увидеть все многочисленные параметры git add в документации git-scm.

Примеры добавления git

git add обычно вписывается в следующий рабочий процесс:

  1. Создайте ветку: git branch update-readme
  2. Оформить заказ в этой ветке: git checkout update-readme
  3. Изменить файл или файлы
  4. Сохранить файл или файлы
  5. Добавьте файлы или сегменты кода, которые должны быть включены в следующую фиксацию: git add README.md
  6. Зафиксируйте изменения: git commit -m "обновите файл README, чтобы включить в него ссылки на руководство по внесению изменений"
  7. Отправьте изменения в удаленную ветку: git push -u origin update-readme

Но git add также можно использовать так:

  1. Создайте ветку: git branch update-readme
  2. Оформить заказ в этой ветке: git checkout update-readme
  3. Изменить файл или файлы
  4. Сохранить файл или файлы
  5. Добавьте только один файл или часть измененного файла: git add README.md
  6. Зафиксируйте первый набор изменений: git commit -m "обновите файл README, чтобы включить в него ссылки на руководство по внесению изменений"
  7. Добавьте другой файл или другую часть измененного файла: git add CONTRIBUTING.md
  8. Зафиксируйте второй набор изменений: git commit -m "создать руководство по внесению вклада"
  9. (Повторите при необходимости)
  10. Отправьте изменения в удаленную ветку: git push -u origin update-readme

git добавить все файлы

Подготовка всех доступных файлов — популярная, хотя и рискованная операция. Это может сэкономить время, но сопряжено с двойным риском:

Плохо продуманная история

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

Случайная подготовка и фиксация файлов

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

Принятие решения о подготовке всех файлов

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

  • git add -A : размещает все файлы, включая новые, измененные и удаленные файлы, включая файлы в текущем каталоге и в более высоких каталогах, которые все еще принадлежат тому же репозиторию git
  • git добавить . : рекурсивно добавляет весь каталог, включая файлы, имена которых начинаются с точки
  • git add -u : размещает только новые и измененные файлы, а НЕ удаленные файлы

git добавить папку или конкретный файл

Самый безопасный и понятный способ использования git add – указать конкретный файл или каталог для промежуточного хранения. Синтаксис для этого может выглядеть так:

git add directory/ : внесение всех изменений во все файлы в каталоге с именем directory
git add README.md : внесение всех изменений в файл README.md

Отменить добавленные файлы

Прежде чем отменить git add , вы должны сначала убедиться, что не потеряете никакой работы. Невозможно «отменить» добавление так же, как вы можете отменить фиксацию, но вы можете переместить файлы из промежуточной области.

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

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

Использование git reset для отмены git add

git reset — гибкая и мощная команда. Одним из его многочисленных вариантов использования является перемещение изменений за пределы из промежуточной области. Для этого используйте «смешанный» уровень сброса, который используется по умолчанию.

Чтобы перенести поэтапные изменения из промежуточной области в рабочий каталог, не затрагивая историю зафиксированных изменений, сначала убедитесь, что у вас нет дополнительных изменений в рассматриваемых файлах, как указано выше. Затем введите git reset HEAD (он же git reset --mixed HEAD ).

  • git status : всегда хорошая идея, эта команда показывает, в какой ветке вы находитесь, какие файлы находятся в рабочем или промежуточном каталоге, а также любую другую важную информацию.
  • git checkout [название ветки]: переключается на указанную ветку и обновляет рабочий каталог.
  • git commit -m "дескриптивное сообщение": постоянно записывает моментальные снимки файлов в историю версий.
  • git push : загружает все коммиты локальной ветки на удаленную.

Начало работы с git и GitHub

Просматривайте код, управляйте проектами и создавайте программное обеспечение вместе с 40 миллионами разработчиков.

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

Команда Новые файлы Измененные файлы Удаленные файлы Описание
git add -A ✔️ ✔️ ✔️ Подготовить все (новые, измененные, удаленные) файлы
git add . ✔️ ✔️ ✔️ Подготовить все (новые, измененные, удаленные) файлы в текущей папке
git add --ignore-removal . ✔️ ✔️ Только новые и измененные файлы
git add -u< /td> ✔️ ✔️ Только измененные и удаленные файлы