Git
инсценировка
Поиск…
замечания
Стоит отметить, что эта постановка имеет мало общего с «файлами» и все, что связано с изменениями в каждом заданном файле. Мы создаем файлы, содержащие изменения, и git отслеживает изменения как фиксации (даже когда изменения в фиксации совершаются через несколько файлов).
Различие между файлами и коммитами может показаться незначительным, но понимание этой разницы является основополагающим для понимания основных функций, таких как вишневый выбор и diff. (См. Разочарование в комментариях относительно сложности принятого ответа, который предлагает вишневый выбор в качестве инструмента управления файлами .)
Что хорошего для объяснения понятий? Это в комментариях?
Ключевые идеи:
Файлы являются более распространенной метафорой этих двух в области информационных технологий. Лучшая практика диктует, что имя файла не изменяется по мере изменения его содержимого (с несколькими признанными исключениями).
Конец - это метафора, которая уникальна для управления исходным кодом. Commits - это изменения, связанные с конкретными усилиями, такими как исправление ошибок. Записи часто включают несколько файлов. Единственное незначительное исправление ошибки может включать в себя настройки шаблонов и CSS в уникальных файлах. Поскольку изменения описаны, разработаны, задокументированы, рассмотрены и развернуты, изменения в отдельных файлах можно аннотировать и обрабатывать как единое целое. Единственным элементом в этом случае является фиксация. Не менее важно, сосредоточив внимание только на фиксации во время обзора, позволяет без изменений игнорировать неизмененные строки кода в различных затронутых файлах.
Создание отдельного файла
Чтобы создать файл для совершения, выполните
git add <filename>
Постановка всех изменений в файлы
git add -A
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>
Верхняя половина этого вывода показывает текущее состояние индекса, разбитого на поставленные и неустановленные столбцы:
-
index.jsбыло добавлено 4 строки и удалено 4 строки. В настоящее время он не поставлен, поскольку текущие отчеты о состоянии «неизменны». Когда этот файл будет поставлен, бит+4/-4будет передан в поэтапный столбец, а столбец с неустановленностью будет читать «ничего». -
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