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