git add — В чем разница между git add ., add -A, add -u и add *?

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

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

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

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

Начиная с Git версии 2.0, поведение команды add приведено в соответствие с поведением commit и других комманд.

Теперь . обозначает не всю рабочую область (working tree), а текущий путь в этой области.

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

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

# работает одинаково из любой директории, добавляет всю рабочую область
git add :/
# путь относительно корневой директории
git add :/path/to/files/
# работает только в текущей директории
cd test
git add .
# эквивалентно этому:
git add :/test
# путь относительно текущей директории
cd test
git add ./path
# эквивалентно этому:
git add :/test/path

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


git add . 
git add '*'

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

Если '*' дается в кавычках, то обрабатывать его будет Git и это эквивалентно

git add .. Исключение: из-под cmd.exe git add '*' не сработает, используйте git add . или git add *.


git add --no-all :/
git add --ignore-removal :/

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

git add --no-all . #добавляет измененные и новые файлы в *текущей директории*
git add --no-all path2/ path3/ # добавляет измененные и новые файлы в путях *относительно текущей директории*

git add -u git add -update

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


git add -A
git add --all
git add --no-ignore-removal

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

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

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

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

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


 git add *

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

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

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

  1. Добавятся не изменившиеся с прошлого коммита файлы. Git спокойно и молча «прожует» этот запрос, не влияющий на индекс.
  2. Будут добавлены в индекс файлы в не-скрытых папках M,?.
  3. Не будут добавлены файлы в скрытых папках. .M, .?
  4. Не будут добавлены удаленные файлы D.
  5. Если будут захвачены игнорируемые файлы !, то будет попытка их добавить. Git отменит всю операцию и покажет сообщение об ошибке.

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

add . в версиях 1.х.

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

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

git add — GIt add . не добавляет файлы к комиту

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

staralex@kvazar:/var/www/develblog/develblogproject$ git add .
staralex@kvazar:/var/www/develblog/develblogproject$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
    modified:   vendor/2amigos/yii2-ckeditor-widget
    modified:   vendor/behat/gherkin
    modified:   vendor/bibldev/yii2-searchwidget
    modified:   vendor/cebe/markdown
    modified:   vendor/codeception/base
    modified:   vendor/costa-rico/yii2-images
    modified:   vendor/doctrine/instantiator
    modified:   vendor/doctrine/lexer
    modified:   vendor/fzaninotto/faker
    modified:   vendor/guzzlehttp/psr7
Changes not staged for commit:
  (use "git add <file>.
.." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) (commit or discard the untracked or modified content in submodules) modified: vendor/kartik-v/yii2-grid (modified content) modified: vendor/kartik-v/yii2-krajee-base (modified content) modified: vendor/myclabs/deep-copy (modified content) modified: vendor/phar-io/manifest (modified content) modified: vendor/phpdocumentor/reflection-common (modified content) modified: vendor/phpspec/php-diff (modified content) modified: vendor/phpspec/prophecy (modified content) modified: vendor/phpunit/php-code-coverage (modified content) modified: vendor/phpunit/php-file-iterator (modified content) modified: vendor/phpunit/php-timer (modified content) modified: vendor/phpunit/php-token-stream (modified content) modified: vendor/phpunit/phpunit (modified content) modified: vendor/phpunit/phpunit-mock-objects (modified content) modified: vendor/psr/http-message (modified content) modified: vendor/psr/log (modified content) modified: vendor/sebastian/code-unit-reverse-lookup (modified content) modified: vendor/sebastian/diff (modified content) modified: vendor/sebastian/environment (modified content) modified: vendor/sebastian/exporter (modified content) modified: vendor/sebastian/global-state (modified content) modified: vendor/sebastian/object-enumerator (modified content) modified: vendor/sebastian/object-reflector (modified content) modified: vendor/sebastian/recursion-context (modified content) modified: vendor/sebastian/resource-operations (modified content) modified: vendor/sebastian/version (modified content) modified: vendor/studio-42/elfinder (modified content) modified: vendor/swiftmailer/swiftmailer (modified content) modified: vendor/symfony/browser-kit (modified content) modified: vendor/symfony/console (modified content) modified: vendor/symfony/css-selector (modified content) modified: vendor/symfony/debug (modified content) modified: vendor/symfony/dom-crawler (modified content) modified: vendor/symfony/event-dispatcher (modified content) modified: vendor/symfony/finder (modified content) modified: vendor/symfony/polyfill-mbstring (modified content) modified: vendor/symfony/translation (modified content) modified: vendor/symfony/yaml (modified content) modified: vendor/webmozart/assert (modified content) modified: vendor/yiimaker/yii2-social-share (modified content) modified: vendor/yiisoft/yii2 (modified content) modified: vendor/yiisoft/yii2-bootstrap (modified content) modified: vendor/yiisoft/yii2-composer (modified content) modified: vendor/yiisoft/yii2-faker (modified content) modified: vendor/yiisoft/yii2-swiftmailer (modified content)

Не помогает ни git add --all, ни git add --force, Да и в . gitignore никаких правил на директорию vendor нет. При git push на bitbucket заливаются все файлы, за исключением отмеченных.

  • git
  • git-add

1

Каталоги это не корень сайта.

У меня тоже в папках vendor нашлись папки .git, по причине этого файлы не загружались на bitbucket.

Удалить папки:
vendor/2amigos/yii2-ckeditor-widget/.git/
vendor/behat/gherkin/.git/

… и заработает.

Команда ниже удалит Ваш репозиторий, не делайте этого, если не уверены или у Вас нет резервной копии


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

sudo rm -Rf .git

1

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Гит Добавить | Atlassian Git Tutorial

При работе в Git или других системах управления версиями концепция «сохранения» представляет собой более тонкий процесс, чем сохранение в текстовом процессоре или других традиционных приложениях для редактирования файлов. Традиционное программное выражение «сохранение» является синонимом термина Git «фиксация». Коммит — это Git-эквивалент «сохранения». Традиционное сохранение следует рассматривать как операцию файловой системы, которая используется для перезаписи существующего файла или записи нового файла. В качестве альтернативы, Git commit — это операция, которая воздействует на набор файлов и каталогов.

Сохранение изменений в Git и SVN — это тоже другой процесс. SVN Commits или «check-in» — это операции, которые делают удаленную отправку на централизованный сервер. Это означает, что для фиксации SVN требуется доступ в Интернет, чтобы полностью «сохранить» изменения проекта. Коммиты Git можно записывать и создавать локально, а затем при необходимости отправлять на удаленный сервер с помощью команды git push -u origin main . Разница между этими двумя методами является фундаментальным отличием архитектурных проектов. Git — это модель распределенного приложения, тогда как SVN — это централизованная модель. Распределенные приложения, как правило, более надежны, поскольку у них нет единой точки отказа, как у централизованного сервера.

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

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

гит добавить

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

В сочетании с этими командами вам также потребуется git status для просмотра состояния рабочего каталога и промежуточной области.

Как это работает

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

Разработка проекта вращается вокруг базового шаблона редактирования/стадии/фиксации. Сначала вы редактируете свои файлы в рабочем каталоге. Когда вы будете готовы сохранить копию текущего состояния проекта, вы вносите изменения с помощью git добавить . После того, как вы довольны подготовленным снимком, вы фиксируете его в истории проекта с помощью git commit . Команда git reset используется для отмены фиксации или промежуточного снимка.

В дополнение к git add и git commit третья команда git push необходима для полного совместного рабочего процесса Git. git push используется для отправки зафиксированных изменений в удаленные репозитории для совместной работы. Это позволяет другим членам команды получить доступ к набору сохраненных изменений.

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

Площадка для подготовки

Основная функция команды git add — продвигать ожидающие изменения в рабочем каталоге в область git staging . Промежуточная область — одна из самых уникальных функций Git, и может потребоваться некоторое время, чтобы разобраться с ней, если вы работаете с SVN (или даже с Mercurial). Это помогает думать об этом как о буфере между рабочим каталогом и историей проекта. Промежуточная область считается одним из «трех деревьев» Git, наряду с рабочим каталогом и историей коммитов.

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

Общие опции

 git add  

Подготовьте все изменения в для следующего коммита.

 git add  

Подготовить все изменения в для следующего коммита.

 git add -p 

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

Примеры

Когда вы начинаете новый проект, git add выполняет ту же функцию, что и svn import . Чтобы создать первоначальную фиксацию текущего каталога, используйте следующие две команды:

 git add . 
git commit

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

 git add hello. py 
git commit

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

Резюме

В обзоре git add — это первая команда в цепочке операций, которая предписывает Git «сохранить» моментальный снимок текущего состояния проекта в истории коммитов. При самостоятельном использовании git add будет продвигать ожидающие изменения из рабочего каталога в промежуточную область. Команда git status  используется для проверки текущего состояния репозитория и может использоваться для подтверждения продвижения git add . Команда git reset используется для отмены git add . Затем команда git commit используется для фиксации моментального снимка промежуточного каталога в истории фиксации репозиториев.

Git — git-add Документация

ИМЯ

git-add — Добавить содержимое файла в индекс

ОБЗОР

  git add  [--verbose | -v] [--пробный | -n] [--сила | -f] [--интерактивный | -i] [--патч | -п]
[--редактировать | -e] [--[no-]все | --[no-]игнорировать-удаление | [--обновить | -u]] [--sparse]
[--намерение добавить | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]
[--chmod=(+|-)x] [--pathspec-from-file=<файл> [--pathspec-file-nul]]
[--] […​] 

ОПИСАНИЕ

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

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

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

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

Команда git add по умолчанию не добавляет игнорируемые файлы. Если есть игнорируемые файлы были явно указаны в командной строке, git add завершится ошибкой со списком игнорируемых файлов. Игнорируемые файлы, достигнутые рекурсия каталога или подстановка имен файлов, выполняемая Git (цитируйте globs перед оболочкой) будут молча игнорироваться. Команда git add может можно использовать для добавления игнорируемых файлов с опцией -f (принудительно).

См. git-commit[1] для альтернативных способов добавления контента в совершить.

ОПЦИИ

…​

Файлы для добавления содержимого. Fileglobs (например, *.c ) могут дать добавить все соответствующие файлы. Также начальное имя каталога (например, dir для добавления dir/file1 и dir/file2 ) можно указать для обновления индекса до соответствовать текущему состоянию каталога в целом (например, указание dir будет записывать не только файл dir/file1 изменено в рабочем дереве, файл каталог/файл2 добавлено в рабочее дерево, но и файл dir/file3 удален из рабочее дерево). Обратите внимание, что старые версии Git использовали игнорировать удаленные файлы; используйте опцию --no-all , если хотите добавлять измененные или новые файлы, но игнорировать удаленные.

Дополнительные сведения о синтаксисе см. в записи pathspec . в гитглоссарии[7].

— пробный запуск

На самом деле не добавляйте файлы, просто покажите, существуют ли они и/или будут быть проигнорировано.

—подробный

Будьте многословны.

—сила

Разрешить добавление игнорируемых файлов.

—разреженный

Разрешить обновление записей индекса за пределами конуса разреженной проверки. Обычно git add отказывается обновлять записи индекса, пути которых не помещаются в конус разреженной кассы, так как эти файлы могут быть удалены из рабочего дерева без предупреждения. Видеть git-sparse-checkout[1] для более подробной информации.

—интерактивный

Интерактивное добавление измененного содержимого в рабочее дерево индекс. Дополнительные аргументы пути могут быть предоставлены для ограничения операцию к подмножеству рабочего дерева. См. «Интерактивный режим» для получения подробной информации.

—патч

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

Это эффективно запускает add --interactive , но обходит начальное командное меню и сразу переходит к подкоманде patch . Подробнее см. в разделе «Интерактивный режим».

—редактировать

Откройте сравнение с индексом в редакторе и дайте пользователю редактировать его. После закрытия редактора откорректируйте заголовки ханков и примените патч к файлу index.

Целью этой опции является выбор строк патча для применить или даже изменить содержимое строк для постановки. Это может быть быстрее и гибче, чем использование интерактивного селектора фрагментов. Однако легко запутаться и создать патч, который не применить к индексу. См. РЕДАКТИРОВАНИЕ ПАТЧЕЙ ниже.

—обновление

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

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

—все
—не-игнорировать-удаление

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

Если при использовании параметра -A не задано, все обновляются файлы во всем рабочем дереве (старые версии Git используется для ограничения обновления текущим каталогом и его подкаталоги).

—нет-все
—игнорировать удаление

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

Этот параметр предназначен в первую очередь для помощи пользователям, привыкшим к более старым версий Git, чье «git add …​» было синонимом для «git add —no-all …​», т. е. игнорирование удаленных файлов.

— намерение добавить

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

—обновить

Не добавлять файлы, а только обновлять их stat() информация в указателе.

—игнорировать ошибки

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

—игнорировать-отсутствует

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

—no-warn-embedded-repo

По умолчанию git add будет предупреждать при добавлении встроенного репозиторий в индекс без использования подмодуля git добавить в создайте запись в . gitmodules . Эта опция подавляет предупреждение (например, если вы вручную выполняете операции на подмодули).

—перенормировать

Применить «чистый» процесс заново ко всем отслеживаемым файлам, чтобы принудительно добавить их снова в индекс. Это полезно после изменение конфигурация core.autocrlf или атрибут text чтобы исправить файлы, добавленные с неправильным окончанием строки CRLF/LF. Эта опция подразумевает -u . Одиночные символы CR остаются нетронутыми, поэтому в то время как CRLF очищается до LF, последовательность CRCRLF только частично очищен до CRLF.

—chmod=(+|-)x

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

—pathspec-from-file=<файл>

Pathspec передается в вместо аргументов командной строки. Если <файл> точно соответствует - , тогда используется стандартный ввод. Pathspec элементы разделены символами LF или CR/LF. Элементы Pathspec могут быть цитируется как объяснено для переменной конфигурации core.quotePath (см. git-config[1]). См. также --pathspec-file-nul и global --literal-pathspecs .

—pathspec-файл-ноль

Имеет смысл только с --pathspec-from-file . Элементы Pathspec отделяется символом NUL, а все остальные символы берутся буквально (включая новые строки и кавычки).

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

ПРИМЕРЫ

  • Добавляет содержимое из всех файлов *.txt в каталоге Documentation и его подкаталоги:

     $ git добавить документацию/\*.txt 

    Обратите внимание, что звездочка * взята из оболочки в этом пример; это позволяет команде включать файлы из подкаталоги каталога Документация/.

  • Рассматривает возможность добавления контента из всех скриптов git-*.sh:

     $ git добавить git-*.sh 

    Поскольку этот пример позволяет оболочке расширить звездочку (т. е. вы явно перечисляя файлы), он не учитывает подкаталог/git-foo.sh .

ИНТЕРАКТИВНЫЙ РЕЖИМ

Когда команда входит в интерактивный режим, она показывает вывод подкоманды status , а затем переходит в ее интерактивный командный цикл.

Цикл команд показывает список доступных подкоманд и выдает подсказку «Что теперь>». В общем, когда подсказка заканчивается с одним > вы можете выбрать только один из предложенных вариантов и введите return, например:

 *** Команды ***
      1: статус 2: обновление 3: отменить 4: добавить неотслеживаемый
      5: патч 6: diff 7: выход 8: помощь
    Что теперь > 1 

Вы также можете сказать s или sta или статус выше, пока выбор уникален.

Основной цикл команд состоит из 6 подкоманд (плюс help и quit).

статус

Показывает разницу между HEAD и index (т.е. что будет зафиксировано, если вы говорите git commit ), и между индексом и файлы рабочего дерева (т. е. то, что вы могли бы подготовить перед git commit с использованием git add ) для каждого пути. Пример вывода выглядит так:

 поэтапный неустановленный путь
     1: бинарное ничего foo.png
     2: +403/-35 +1/-1 add-interactive.c 

Это показывает, что foo.png имеет отличия от HEAD (но это двоичный, поэтому количество строк не может быть показано) и нет разница между индексированной копией и рабочим деревом версия (если версия рабочего дерева тоже была другой, двоичный код был бы показан вместо ничего ). в другом файле, add-interactive.c, добавлено 403 строки. и 35 строк удаляются, если коммитить то, что есть в индексе, но файл рабочего дерева имеет дальнейшие модификации (одно добавление и одно удаление).

обновление

Показывает информацию о состоянии и выдает «Обновить>>». быстрый. Когда подсказка заканчивается двойным >> , вы можете сделать более одного выбора, объединенного пробелом или запятая. Также вы можете сказать диапазоны. Например. «2-5 7,9» на выбор 2,3,4,5,7,9 из списка. Если второе число в диапазоне опущены, все оставшиеся патчи взяты. Например. «7-» на выбор 7,8,9 из списка. Вы можете сказать * , чтобы выбрать все.

То, что вы выбрали, затем выделяется * , вот так:

 поэтапный неустановленный путь
  1: бинарное ничего foo.png
* 2: +403/-35 +1/-1 add-interactive.c 

Чтобы снять выделение, добавьте к входу префикс - . вот так:

 Обновление>> -2 

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

вернуть

Интерфейс очень похож на обновление , а поэтапный информация для выбранных путей возвращается к ГЛАВНАЯ версия. Возврат новых путей делает их неотслеживаемыми.

добавить неотслеживаемый

Интерфейс очень похож на обновление и вернуть и добавить неотслеживаемые пути в индекс.

патч

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

 г - поставить этот кусок
n - не ставить этот кусок
д - выйти; не ставить этот кусок или любой из оставшихся
a - подготовить этот фрагмент и все последующие фрагменты в файле
d — не размещать этот фрагмент или любой из последующих фрагментов в файле.
g - выберите кусок, чтобы перейти к
/ - поиск фрагмента, соответствующего заданному регулярному выражению
j - оставить этот фрагмент неопределенным, посмотреть следующий неопределенный фрагмент
J - оставить этот фрагмент нерешенным, см.  следующий фрагмент
k - оставить этот фрагмент неопределенным, см. предыдущий неопределенный фрагмент
K - оставить этот фрагмент нерешенным, см. предыдущий фрагмент
s - разбить текущий кусок на более мелкие куски
e - вручную отредактировать текущий ханк
? - распечатать справку 

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

Вы можете не вводить здесь return, установив конфигурацию переменная Interactive.singleKey от до true .

дифференциал

Позволяет просмотреть, что будет зафиксировано (т. е. между ГОЛОВА и указатель).

РЕДАКТИРОВАНИЕ ПАТЧЕЙ

Вызов git add -e или выбор e из интерактивного куска селектор откроет патч в вашем редакторе; после выхода из редактора результат применяется к индексу. Вы можете вносить произвольные изменения к патчу, но обратите внимание, что некоторые изменения могут привести к запутанным результатам или даже привести к патчу, который не может быть применен. Если вы хотите прервать операцию полностью (т. е. ничего нового в индексе), просто удалите все строки патча. В приведенном ниже списке описаны некоторые общие вещи, которые вы можно увидеть в патче, и какие операции редактирования имеют для них смысл.

добавленный контент

Добавленный контент представлен строками, начинающимися с «+». Ты можешь предотвратить постановку любых строк добавления, удалив их.

удаленный контент

Удаленное содержимое представлено строками, начинающимися с «-«. Ты можешь предотвратить поэтапное их удаление путем преобразования «-» в » » (пробел).

измененное содержимое

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

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

Избегайте использования этих конструкций или делайте это с особой осторожностью.

удаление нетронутого содержимого

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

изменение существующего контента

Можно также изменить строки контекста, поставив их на удаление (путем преобразование » » в «-«) и добавление строки «+» с новым содержимым. Точно так же можно изменить строки «+» для существующих дополнений или модификации. Во всех случаях новая модификация будет казаться перевернутой. в рабочем дереве.

новый контент

Вы также можете добавить новый контент, которого нет в патче; просто добавьте новые строки, каждая из которых начинается с «+». Дополнение появится вернулся в рабочее дерево.

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

  • добавление контекста (» «) или удаление («-«) строк

  • удаление контекста или удаление строк

  • изменение содержимого контекста или удаление строк

КОНФИГУРАЦИЯ

Все, что ниже этой строки в этом разделе, включено выборочно из документации git-config[1]. Содержание такое же как то, что там найдено:

add.ignoreErrors
add.ignore-errors (устарело)

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