Поиск…


замечания

Стоит отметить, что эта постановка имеет мало общего с «файлами» и все, что связано с изменениями в каждом заданном файле. Мы создаем файлы, содержащие изменения, и git отслеживает изменения как фиксации (даже когда изменения в фиксации совершаются через несколько файлов).

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

Что хорошего для объяснения понятий? Это в комментариях?

Ключевые идеи:

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

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

Создание отдельного файла

Чтобы создать файл для совершения, выполните

git add <filename>

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

git add -A
2,0
git add .

В версии 2.x git add . будет сгенерировать все изменения в файлах в текущем каталоге и во всех его подкаталогах. Однако в 1.x он будет создавать только новые и измененные файлы, а не удаленные файлы .

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

Снятые с этапа файлы

git rm filename

Чтобы удалить файл из git без его удаления с диска, используйте флаг --cached

git rm --cached filename

Нестандартный файл, содержащий изменения

git reset <filePath>

Интерактивное добавление

git add -i (или --interactive ) даст вам интерактивный интерфейс, в котором вы можете отредактировать индекс, чтобы подготовить то, что вы хотите иметь в следующем коммите. Вы можете добавлять и удалять изменения во всех файлах, добавлять необработанные файлы и удалять файлы из отслеживаемых объектов, а также выбирать подразделы для внесения изменений в индекс, выбирая куски добавляемых изменений, разделяя эти фрагменты или даже редактируя diff , Многие графические инструменты фиксации для Git (например, git gui ) включают такую ​​функцию; это может быть проще в использовании, чем версия командной строки.

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

$ git add -i
           staged     unstaged path
  1:    unchanged        +4/-4 index.js
  2:        +1/-0      nothing package.json

*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
What now>

Верхняя половина этого вывода показывает текущее состояние индекса, разбитого на поставленные и неустановленные столбцы:

  1. index.js было добавлено 4 строки и удалено 4 строки. В настоящее время он не поставлен, поскольку текущие отчеты о состоянии «неизменны». Когда этот файл будет поставлен, бит +4/-4 будет передан в поэтапный столбец, а столбец с неустановленностью будет читать «ничего».
  2. package.json добавил одну строку и был поставлен. Дальнейших изменений нет, так как он был поставлен, как указано «ничейной» строкой под неустановленным столбцом.

Нижняя половина показывает, что вы можете сделать. Введите либо число (1-8), либо букву ( s , u , r , a , p , d , q , h ).

status показывает выход, идентичный верхней части вышеприведенного вывода.

update позволяет вам вносить дополнительные изменения в поставленные фиксации с дополнительным синтаксисом.

revert вернет информацию о поставленной фиксации обратно в HEAD.

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

patch позволяет выбрать один путь из выхода, аналогичного status для дальнейшего анализа.

diff показывает, что будет сделано.

quit завершает команду.

help дает дополнительную помощь в использовании этой команды.

Добавить изменения в hunk

Вы можете увидеть, какие «чанки» работы будут поставлены для фиксации с использованием флага патча:

git add -p

или же

git add --patch

Это открывает интерактивное приглашение, которое позволяет вам взглянуть на разницу и позволить вам решить, хотите ли вы включить их или нет.

Stage this hunk [y,n,q,a,d,/,s,e,?]?
  • y ставьте этот кусок для следующего фиксации
  • n не ставьте этот кусок для следующего фиксации
  • q quit; не ставьте этот кусок или какой-либо из оставшихся кусков
  • на сцене этот кусок и все последующие ханки в файле
  • d не ставьте этот кусок или какой-либо из последующих хаков в файл
  • g выберите кусок, чтобы перейти к
  • / поиск совпадающего с заданным регулярным выражением
  • j оставить этот кусок нерешенным, см. следующий неустановленный кусок
  • Я оставляю этот кусок нерешенным, см. Следующий кусок
  • k оставить этот кусок нерешенным, см. предыдущий неопределенный кусок
  • K оставить этот кусок неопределенным, см. Предыдущий кусок
  • ы разделить текущий ломоть на более мелкие куски
  • е вручную изменить текущий ломоть
  • ? распечатать hunk help

Это позволяет легко поймать изменения, которые вы не хотите совершать.

Вы также можете открыть это через git add --interactive и выбрать p .

Показать поэтапные изменения

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

git diff --cached


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow