Как добавить файлы в индекс и зафиксировать с помощью одной команды

Обновлено: 04.07.2024

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

Важные параметры

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

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

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

Шпаргалка Git

Не нужно запоминать все эти команды и параметры: получите нашу популярную «Шпаргалку по Git» — бесплатно!

Примеры использования

Вы можете указать один или несколько путей и тем самым добавить изменения в эти файлы в область подготовки:

Эти изменения будут частью следующей фиксации.

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

Промежуточные фрагменты или строки ваших изменений

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

Попробуйте бесплатно в течение 30 дней и узнайте, почему 100 000 разработчиков по всему миру используют Tower, чтобы работать с Git более продуктивно!

Подробнее

  • Прочитайте главу «Работа над вашим проектом» в нашей бесплатной онлайн-книге.
  • Полное описание команды см. в документации Git.
  • Часто задаваемые вопросы о Git и управлении версиями

Получите нашу популярную памятку по Git бесплатно!

Самые важные команды вы найдете на лицевой стороне, а полезные советы — на обратной. Более 100 000 разработчиков скачали его, чтобы сделать Git немного проще.

О нас

Как создатели Tower, лучшего клиента Git для Mac и Windows, мы помогаем более чем 100 000 пользователей в таких компаниях, как Apple, Google, Amazon, Twitter и Ebay, получить максимальную отдачу от Git.

Как и в случае с Tower, наша миссия с этой платформой – помочь людям стать лучшими профессионалами.

Вот почему мы бесплатно предоставляем наши руководства, видеоролики и памятки (об управлении версиями в Git и многих других темах).

© Tower, 2010-2022. Упомянутые названия продуктов и логотипы являются собственностью соответствующих владельцев.

Кажется, я часто использую эти две команды, и если бы в Git была такая опция, как git commit -Am "commit message" , это сделало бы жизнь намного удобнее.

git commit имеет модификатор -a, но это не совсем то же самое, что и git add -A перед фиксацией. git add -A добавляет вновь созданные файлы, а git commit -am - нет. Что делает?

лучше экономить время и фиксировать каждое изменение, поэтому я использую git commit -am "yes the code in commit"

git add -A и, что еще хуже, git add . оба вредны и не должны использоваться в подавляющем большинстве сценариев. Вы хотите, чтобы git add -p или git add -i действительно учитывал то, что вы создаете.

27 ответов 27

Вы можете использовать псевдонимы git, например,

и использовать его с

РЕДАКТИРОВАТЬ: Вернуться к галочкам ('), так как в противном случае расширение оболочки в Linux будет невозможным. В Windows вместо этого следует использовать двойные кавычки ("") (указано в комментариях, не проверял).

@MrFusion Делает команду внешней командой оболочки вместо ярлыка во внутренней команде git, т. е. вся строка выполняется как отдельный процесс.

Я предпочитаю git config --global alias.add-commit '!git add -A && git commit -m', чтобы мне не приходилось каждый раз вводить -m.

Мне лень каждый раз набирать "добавить-фиксацию" и "-m". Следовательно, я набираю: git config --global alias.ac '!git add -A && git commit -m' каждый раз, когда просто набираю: git ac 'comment' :)

git config --global alias.add-commit "!git add -A && git commit" (т.е. двойные кавычки вместо одинарных) работает в Windows.

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

это простой способ добавить все файлы, новые или измененные. Кроме того, применяется всеобъемлющая квалификация. Приведенные выше команды не удалят файлы, удаленные без команды git rm.

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

или просто git commit -am "message" - просто убедитесь, что нет новых файлов, которые git еще не подхватил. в противном случае вам нужно будет использовать git add . && перед этим. сделать это в одну строку.

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

Эта строка добавит и зафиксирует все измененные и добавленные файлы в репозиторий.

Самое простое, что вы можете сделать, это:

Я не понимаю, почему мы все усложняем.

Привет, @tymtam, эта команда добавляет все отслеживаемые файлы в промежуточную область и фиксирует с заданным сообщением. Неотслеживаемые файлы добавляются в промежуточную область с помощью команды git add -A.

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

Только адаптация ответа Алеся и комментария суда для linux bash:

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

git commit -am "комментарий"

Эта строка добавит и зафиксирует все изменения в репозитории.

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

git добавить . ; git commit -am "сообщение"

git commit -am "comment" — это ярлык для добавления и фиксации всех измененных файлов. Если вы хотите добавить и зафиксировать только 1 файл, вам нужно будет выполнить: git add file.txt ; git commit -m "комментарий"

Просто объедините свои команды:

В более поздних версиях git вы можете добавлять и фиксировать вот так

Дополнительно вы псевдоним:

Тогда вы можете использовать его следующим образом:

На моем компьютере с Windows я установил этот псевдоним .bashrc, чтобы упростить весь процесс.

добавить следующую строку в файл

это git add commit и push . изменить его любым способом, скажем, вы не хотите, чтобы команда push удаляла эту часть

перезагрузите .bashrc / закройте и снова откройте оболочку

почти уверен, что вы можете использовать:

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

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

  • git добавить . сокращается до ga .
  • git commit -m "сообщение" сокращено до gc -m "сообщение"
  • git push сокращено до gp
  • git fetch сокращено до gf
  • главный источник git pull сокращен до ggl master
  • главный источник git push сокращен до ggp master
  • git checkout -b сокращено до gcb
  • git merge сокращено до gm
  • git remote сокращенно до gr
  • статус git сокращен до gst

введите здесь описание изображения

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

Обратите внимание на "." в конце. который также может быть путем к файлу/каталогу

У меня есть эта функция в моем .bash_profile, или .profile, или .zprofile, или любом другом файле, полученном в оболочках входа:

один раз вам нужно будет просто ввести

это должен быть лучший ответ, очень простой и включает НЕОТСЛЕЖИВАЕМЫЕ файлы, в отличие от большинства других предложений.

сохраните, например, git.sh и позже вызовите:

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

Создайте псевдоним в bash: alias gac="git add -A && git commit -m"

(Я назвал ярлык "gac", но это не обязательно)

Используйте это: gac 'здесь ваше сообщение о коммите'

Я использую следующее (оба находятся в стадии разработки, поэтому я постараюсь не забыть обновить это):

Я получаю окно vim, чтобы получить больше инструментов для редактирования моего сообщения о коммите.

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

@Yunnosch Думаю, я не видел ответа Навида перед публикацией, так как он «слишком ленив»: P, чтобы публиковать его как полный ответ. Действительно, это то же самое, и вообще-то этот псевдоним у меня давно, позаимствовал у коллеги. Так что я думаю, мы можем назвать это: цепь плагиата. Извините, если это вас побеспокоило.

Сначала проверьте, какие у вас псевдонимы.

// git add commit -m

Например, если вы используете последний.

Нравится выбор. Вы даже можете добавить git config --global alias.acmp '!git add -A && git commit -m "update" && git push'

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

Я назвал его "gitfile.sh" и добавил в свой $PATH. Затем я могу запустить git add и зафиксировать один файл одной командой:

Для серебристых спин в толпе, привыкших к таким вещам, как Subversion. сделать "фиксацию" в старом смысле этого слова (т.е.-- или в git -- добавить, зафиксировать и отправить) за один шаг я обычно добавляю что-то вроде следующего в корень моего проекта (как файл bat в Windows, например, git-commit.bat). Затем, когда я хочу добавить, зафиксировать и отправить, я просто набираю что-то вроде git-commit «Добавил кое-что новое», и все это отправляется в удаленное репо.

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

Обычно я также запускаю git config credential.helper store один раз, поэтому мне не нужно указывать uid/pwd при его запуске.

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

После некоторых исследований я понял, что такой команды для этого нет, но вы можете написать скрипт в своем .bashrc или .bash_profile в зависимости от вашей ОС.

Я поделюсь тем, что использую сам:

При этом все ваши изменения будут добавлены и зафиксированы, вы можете просто ввести gac, и вам будет предложено написать сообщение о фиксации

Или вы можете ввести свое сообщение о коммите напрямую gac Hello world , все ваши изменения будут добавлены, и ваше сообщение о коммите будет Hello world, обратите внимание, что "" не используются

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

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

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

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

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

Пожалуйста, см. git-commit[1] для альтернативных способов добавления контента в фиксацию.

ВАРИАНТЫ

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

Подробнее о синтаксисе см. в записи pathspec в gitglossary[7].

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Свежепримените "очистку" ко всем отслеживаемым файлам, чтобы снова принудительно добавить их в индекс. Это полезно после изменения конфигурации core.autocrlf или текстового атрибута, чтобы исправить файлы, добавленные с неправильными окончаниями строк CRLF/LF. Эта опция подразумевает -u .

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

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

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

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

ПРИМЕРЫ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Постановка

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

Проверить статус

Давайте сначала проверим статус нашего репозитория Git.

<р>1. В своем терминале (терминал, Git Bash или командная строка Windows) перейдите в папку, которая является вашим репозиторием Git.
2. Введите эту команду:

статус Git

<р>3. Вы увидите, в какой ветке вы находитесь (которая для новых репозиториев будет главной) и статус файлов (неотслеживаемые, измененные или удаленные). Мы объясним ветки позже.

Промежуточные файлы для подготовки к фиксации

<р>1. Введите одну из следующих команд в зависимости от того, что вы хотите сделать:

  • Подготовить все файлы: git add .
  • Подготовьте файл: git add example.html (замените example.html именем вашего файла)
  • Подготовьте папку: git add myfolder (замените myfolder на путь к папке)
  • Если в имени файла/пути есть пробел, заключите его в кавычки.
  • Вы можете повторить приведенные выше команды для разных файлов и папок.
<р>2. Еще раз проверьте статус, введя следующую команду:

статус Git

<р>3. Вы должны увидеть, что изменения готовы к фиксации.

Отключить файл

Если вы случайно что-то поместили, используйте следующую команду, чтобы отменить это:

git reset HEAD example.html
(замените example.html своим файлом или папкой)

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

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

  • git rm example.html для удаления файла (и его обработки)
  • git rm -r myfolder, чтобы удалить папку (и создать ее)

Зафиксировать файлы

<р>1. Введите эту команду:

git commit -m "Сообщение, описывающее, что делает это изменение"

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

<р>2. Еще раз проверьте статус, выполнив эту команду:

статус Git

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

Исправление вашего последнего сообщения фиксации

Если вы допустили ошибку в своем последнем сообщении фиксации, выполните следующую команду:

git commit --amend -m "Поместите здесь исправленное сообщение"

Просмотреть список коммитов

При просмотре списка коммитов доступны различные команды в зависимости от того, сколько информации вы хотите просмотреть.

  • Чтобы просмотреть упрощенный список коммитов, выполните следующую команду:
    • git log --oneline
    • журнал Git

    ПРИМЕЧАНИЕ. Если список длинный, используйте клавиши со стрелками вниз/вверх для прокрутки и нажмите Q, чтобы выйти.

    • Чтобы просмотреть список коммитов с еще более подробной информацией (включая измененные файлы), выполните следующую команду:
      • журнал git --stat

      ПРИМЕЧАНИЕ. Если список длинный, используйте клавиши со стрелками вниз/вверх для прокрутки и нажмите Q, чтобы выйти.

      Выйти за рамки Git

      Мы предлагаем полный набор курсов по программированию для учащихся всех уровней. Учитесь на реальных проектах от опытных инструкторов. Посетите наши учебные курсы и курсы по кодированию прямо сейчас:

      Связанные ресурсы

      <Р> < бр />

      Что такое Git и зачем его использовать?

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


      Основы командной строки Git

      Несмотря на то, что через интерфейс командной строки можно сделать многое, главное, что вам нужно знать, как это сделать в Git, — это перейти к папке.

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

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

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

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

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

      Пожалуйста, см. git-commit(1) для альтернативных способов добавления контента в фиксацию.

      Параметры

      <р>. Файлы, из которых нужно добавить содержимое. Fileglobs (например, *.c) могут быть заданы для добавления всех соответствующих файлов. Также можно задать начальное имя каталога (например, dir для добавления каталог/файл1 и каталог/файл2) для рекурсивного добавления всех файлов в каталог. -n, --dry-run На самом деле не добавлять файлы, просто показать, существуют ли они. -v, --verbose Многословно. -f, --force Разрешить добавление игнорируемых файлов. -i, --interactive Интерактивно добавить измененное содержимое рабочего дерева в индекс. Могут быть предоставлены необязательные аргументы пути, чтобы ограничить операцию подмножеством рабочего дерева. Подробнее см. в разделе «Интерактивный режим». -p, --patch Интерактивно выбирать фрагменты исправлений между индексом и рабочим деревом и добавлять их в индекс. Это дает пользователю возможность просмотреть разницу, прежде чем добавлять измененное содержимое в индекс.

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

      ПРИМЕЧАНИЕ. Очевидно, что если вы измените что-либо, кроме первого символа в строках, начинающихся с пробела или минуса, исправление больше не будет применяться. -u, --update Совпадать только с уже отслеженными файлами в индексе, а не с рабочим деревом. Это означает, что он никогда не будет размещать новые файлы, но будет размещать измененное новое содержимое отслеживаемых файлов и удалять файлы из индекса, если соответствующие файлы в рабочем дереве были удалены.

      Если не указано, по умолчанию используется "."; другими словами, обновить все отслеживаемые файлы в текущем каталоге и его подкаталогах. -A, --all То же, что и -u, но совпадать с файлами в рабочем дереве в дополнение к индексу. Это означает, что он найдет новые файлы, а также поместит измененный контент и удалит файлы, которых больше нет в рабочем дереве. -N, --intent-to-add Записывать только тот факт, что путь будет добавлен позже.Запись пути помещается в указатель без содержания. Это полезно, помимо прочего, для отображения неустановленного содержимого таких файлов с помощью git diff и их фиксации с помощью git commit -a. --refresh Не добавлять файлы, а только обновлять их информацию stat() в индексе. --ignore-errors Если какие-то файлы не удалось добавить из-за ошибок при их индексации, не прерывайте операцию, а продолжайте добавлять остальные. Команда по-прежнему должна выходить с ненулевым статусом. -- Этот параметр можно использовать для отделения параметров командной строки от списка файлов (полезно, когда имена файлов могут быть ошибочно приняты за параметры командной строки).

      Конфигурация

      Необязательная переменная конфигурации core.excludesfile указывает путь к файлу, содержащему шаблоны имен файлов для исключения из git-add, аналогично $GIT_DIR/info/exclude. Шаблоны в файле exclude используются в дополнение к шаблонам в info/exclude. См. gitrepository-layout(5).

      Примеры

      • Добавляет содержимое из всех файлов \*.txt в каталоге Documentation и его подкаталогах: обратите внимание, что звездочка \* в этом примере взята из оболочки; это позволяет команде включать файлы из подкаталогов каталога Documentation/. • Рассматривается добавление содержимого из всех сценариев git-*.sh: поскольку в этом примере оболочка позволяет разворачивать звездочку (т. е. вы явно перечисляете файлы), subdir/git-foo.sh не учитывается.

      Интерактивный режим

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

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

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

      статус Здесь показано изменение между HEAD и индексом (т. е. что будет зафиксировано, если вы скажете git commit), а также между индексом и файлами рабочего дерева (т. е. то, что вы могли бы добавить перед git коммитом с помощью git add) для каждого пути. Пример вывода выглядит следующим образом: Он показывает, что файл foo.jpg отличается от файла HEAD (но он двоичный, поэтому количество строк не может быть отображено) и нет никакой разницы между индексированной копией и версией рабочего дерева (если версия рабочего дерева также была иначе, вместо ничего был бы показан двоичный). В другом файле, git-add-interactive.perl, добавлено 403 строки и удалено 35 строк, если вы фиксируете то, что находится в индексе, но рабочий файл дерева имеет дополнительные модификации (одно добавление и одно удаление). update Отображает информацию о состоянии и выдает приглашение «Обновить>>». Когда подсказка заканчивается двойным >>, вы можете сделать более одного выбора, объединенного пробелом или запятой. Также вы можете сказать диапазоны. Например. "2-5 7,9" для выбора 2,3,4,5,7,9 из списка. Если второе число в диапазоне опущено, берутся все оставшиеся патчи. Например. "7-" для выбора 7,8,9 из списка. Вы можете сказать *, чтобы выбрать все.

      То, что вы выбрали, затем выделяется с помощью *, например: Чтобы удалить выделение, поставьте перед вводом префикс -, например: После выбора ответьте пустой строкой, чтобы подготовить содержимое рабочей файлы дерева для выбранных путей в индексе. revert Интерфейс очень похож на update, а поэтапная информация для выбранных путей возвращается к версии HEAD. Возврат новых путей делает их неотслеживаемыми. добавить неотслеживаемые. Этот пользовательский интерфейс очень похож на обновление и возврат и позволяет добавлять неотслеживаемые пути в индекс. patch Это позволяет вам выбрать один путь из статуса, подобного выбору. После выбора пути он представляет разницу между индексом и файлом рабочего дерева и спрашивает вас, хотите ли вы поэтапно изменить каждый фрагмент. Вы можете сказать: после решения судьбы всех ханков, если какой-либо ханк был выбран, индекс обновляется выбранными ханками. diff Позволяет просмотреть, что будет зафиксировано (например, между HEAD и index).

      См. также

      Автор

      Документация

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