-
1. Начало
- 1.1 За Version Control системите
- 1.2 Кратка история на Git
- 1.3 Какво е Git
- 1.4 Конзолата на Git
- 1.5 Инсталиране на Git
- 1.6 Първоначална настройка на Git
- 1.7 Помощна информация в Git
- 1.8 Обобщение
-
2. Основи на Git
-
3. Клонове в Git
-
4. GitHub
-
5. Git инструменти
- 5.1 Избор на къмити
- 5.2 Интерактивно индексиране
- 5.3 Stashing и Cleaning
- 5.4 Подписване на вашата работа
- 5.5 Търсене
- 5.6 Манипулация на историята
- 5.7 Мистерията на командата Reset
- 5.8 Сливане за напреднали
- 5.9 Rerere
- 5.10 Дебъгване с Git
- 5.11 Подмодули
- 5.12 Пакети в Git (Bundling)
- 5.13 Заместване
- 5.14 Credential Storage система
- 5.15 Обобщение
-
6. Настройване на Git
- 6.1 Git конфигурации
- 6.2 Git атрибути
- 6.3 Git Hooks
- 6.4 Примерна Git-Enforced политика
- 6.5 Обобщение
-
7. Git и други системи
- 7.1 Git като клиент
- 7.2 Миграция към Git
- 7.3 Обобщение
-
8. Git на ниско ниво
- 8.1 Plumbing и Porcelain команди
- 8.2 Git обекти
- 8.3 Git референции
- 8.4 Packfiles
- 8.5 Refspec спецификации
- 8.6 Транспортни протоколи
- 8.7 Поддръжка и възстановяване на данни
- 8.8 Environment променливи
- 8.9 Обобщение
-
9. Приложение A: Git в други среди
-
10. Приложение B: Вграждане на Git в приложения
- 10.1 Git от команден ред
- 10.2 Libgit2
- 10.3 JGit
- 10.4 go-git
- 10.5 Dulwich
-
A1. Приложение C: Git команди
- A1.1 Настройки и конфигурация
- A1.2 Издърпване и създаване на проекти
- A1.3 Snapshotting
- A1.4 Клонове и сливане
- A1.5 Споделяне и обновяване на проекти
- A1.6 Инспекция и сравнение
- A1.7 Дебъгване
- A1.8 Patching
- A1.9 Email команди
- A1.10 Външни системи
- A1.11 Административни команди
- A1.12 Plumbing команди
A1.3 Приложение C: Git команди - Snapshotting
Snapshotting
За основния работен процес по индексиране на съдържание и къмитването му в историята, съществуват само няколко основни команди.
git add
Командата git add
добавя съдържание от работната директория в staging area (или “индексната област”) за следващия къмит.
Когато се изпълни git commit
, по подразбиране тя гледа какво има само в индекса, така git add
се използва за определяне на това какво точно искате да включите в следващия snapshot.
Това е много важна за Git команда и се споменава десетки пъти в книгата. Ето по-важните места.
Представихме git add
първо в Проследяване на нови файлове.
Показахме как да я използваме за разрешаване на конфликти при сливане в Конфликти при сливане.
Демонстрирахме как да я използваме интерактивно за да индексираме само специфични части от модифициран файл в Интерактивно индексиране.
Последно, емулирахме я на ниско ниво в Tree обекти, така че да получите представа какво се случва под повърхността.
git status
Командата git status
ще ви покаже различните статуси на файловете в работната директория и индексната област.
Кои файлове са променени и неиндексирани и кои са индексирани, но все още не са къмитнати.
В нормалната си форма, тя също така подава основни съвети за това как да премествате файлове между тези етапи.
Видяхме status
за първи път в Проверка на статуса на файловете.
Използваме я почти навсякъде в книгата, но почти всичко, което можете да вършите с нея е обяснено там.
git diff
Командата git diff
се използва, когато искате да видите разликите между кои да е две дървета.
Това би могло да бъде разликата между работната област и индексната (което прави git diff
без аргументи), между индексната област и последния къмит (git diff --staged
), или между два къмита (git diff master branchB
).
За пръв път срещнахме git diff
в Преглед на индексираните и неиндексирани промени, където показахме как да видим кои промени са индексирани и кои все още не са.
Използвахме я и за търсене на възможни whitespace проблеми преди къмитване с опцията --check
в [_commit_guidelines].
Видяхме как да проверим за разлики между клонове по ефективен начин използвайки синтаксиса git diff A…B
в Изследване на промените.
Използвахме я за да филтрираме whitespace разлики с флага -b
а също и за сравнение на различни етапи от конфликтни файлове с --theirs
, --ours
и --base
в Сливане за напреднали.
Накрая, използвахме я за ефективно сравнение на submodule промени със --submodule
опцията в Първи стъпки с подмодулите.
git difftool
Командата git difftool
просто стартира външен инструмент за показване на разликите между две дървета, в случай че предпочитате нещо различно от вградената git diff
.
Споменахме я в Преглед на индексираните и неиндексирани промени.
git commit
Командата git commit
взема съдържанието на всички файлове индексирани преди това с git add
и записва нов перманентен snapshot в базата данни, след което премества указателя на текущия клон към него.
Основите на къмитването показахме в Публикуване на промените (commit).
Там също така показахме как с удобния флаг -a
можем да прескочим git add
стъпката в ежедневния работен процес и как с -m
да подадем къмит съобщението директно от командния ред, вместо да пускаме редактора.
Във Възстановяване на направени действия разгледахме опцията --amend
за да направим отново последния къмит.
В Накратко за разклоненията навлязохме в повече детайли за това какво прави git commit
и защо го прави по дадения начин.
Видяхме как да подписваме къмити криптографски с флага -S
в Подписване на къмити.
Последно, погледнахме какво прави зад кулисите git commit
и как това е имплементирано в Commit обекти.
git reset
Командата git reset
се използва основно за отмяна на действия, както подсказва името ѝ.
Тя премества указателя на HEAD
и по избор може да променя индексната област, както и работната директория с опцията --hard
.
Тази последна опция дава възможност за загуба на данни, ако се използва неправилно, така че трябва да я разберете добре преди да я ползвате.
За пръв път се срещнахме с простата форма на git reset
в Изваждане на файл от индекса, където я използвахме за да извадим от индекса файл, върху който е изпълнена git add
.
След това я разгледахме в повече детайли в Мистерията на командата Reset, секцията беше изцяло посветена на нея.
Използвахме git reset --hard
за да отменим сливане в Прекъсване на сливане, където също така използвахме и git merge --abort
, която е един вид wrapper за git reset
.
git rm
Използваме git rm
за изваждане на файлове от индексната област и работната директория в Git.
Тя е подобна на git add
в това, че индексира файл (само че за изваждане) от следващия къмит.
Погледнахме я в малко детайли в Изваждане на файлове, включително за рекурсивно изтриване на файлове и също така за изтриване на файлове само от индекса, но не и от работната директория с опцията --cached
.
Единственият вид различно приложение на git rm
в книгата е в Изтриване на обекти, където използвахме и обяснихме опцията --ignore-unmatch
при изпълнение на git filter-branch
, която просто игнорира грешката, ако файлът който се опитваме да изтрием не съществува.
Това може да е полезно за ползване в скриптове.
git mv
Командата git mv
е просто удобен заместител за ситуациите, когато трябва да преместите файл, да изпълните git add
за новия файл и след това git rm
за стария.
Само я споменахме накратко в Преименуване на файлове.
git clean
Командата git clean
се използва за премахване на нежелани файлове от работната директория.
Това може да включва премахването на временни обекти от компилиране или merge conflict файлове.
Разглеждаме много от опциите и сценариите, в които може да се използва clean командата в Почистване на работната директория.