- 1.1 За верзиска контрола
- 1.2 Кратка историја на Git
- 1.3 Основи на Гит
- 1.4 Командната линија
- 1.5 Инсталирање на Git
- 1.6 First-Time Git Setup
- 1.7 Getting Help
- 1.8 Заклучок
2. Основите на Git
3. Гранење во Git
- 3.1 Гранење објаснето
- 3.2 Основно разгранување и спојување
- 3.3 Branch Management
- 3.4 Работни процеси
- 3.5 Далечински гранки
- 3.6 Ребаза
- 3.7 Заклучок
4. Git на Сервер
- 4.1 Протоколите
- 4.2 Добивање на Git на сервер
- 4.3 Генерирање на вашиот SSH јавен клуч
- 4.4 Поставување на серверот
- 4.5 Гит демон
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Опции за домаќини на трети лица
- 4.10 Заклучок
5. Дистрибуиран Git
- 5.1 Дистрибуирани работни процеси
- 5.2 Придонес кон проект
- 5.3 Приватен мал тим
- 5.4 Одржување на проект
- 5.5 Заклучок
7. Git Алатки
- 7.1 Revision Selection
- 7.2 Интерактивно стажирање
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Напредно спојување
- 7.9 Rerere
- 7.10 Дебагирање со Git
- 7.11 Submodules
- 7.12 Збивање
- 7.13 Заменување
- 7.14 Складирање на ингеренции
- 7.15 Заклучок
8. Персонализација на Git
- 8.1 Git Configuration
- 8.2 Git Атрибути
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Заклучок
9. Git и други системи
- 9.1 Git како Клиент
- 9.2 Мигрирање кон Git
- 9.3 Заклучок
10. Внатрешноста на Git
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Заклучок
A1. Appendix A: Git во други околини
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git in Powershell
- A1.7 Заклучок
A2. Appendix B: Вметнување на Git во вашите апликации
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
A3. Appendix C: Git команди
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
A3.3 Appendix C: Git команди - Basic Snapshotting
For the basic workflow of staging content and committing it to your history, there are only a few basic commands.
git add command adds content from the working directory into the staging area (or “index”) for the next commit.
git commit command is run, by default it only looks at this staging area, so
git add is used to craft what exactly you would like your next commit snapshot to look like.
This command is an incredibly important command in Git and is mentioned or used dozens of times in this book. We’ll quickly cover some of the unique uses that can be found.
We first introduce and explain
git add in detail in Следење на нови датотеки.
We mention how to use it to resolve merge conflicts in Basic Merge Conflicts.
We go over using it to interactively stage only specific parts of a modified file in Интерактивно стажирање.
Finally, we emulate it at a low level in Tree Objects, so you can get an idea of what it’s doing behind the scenes.
git status command will show you the different states of files in your working directory and staging area.
Which files are modified and unstaged and which are staged but not yet committed.
In its normal form, it also will show you some basic hints on how to move files between these stages.
We first cover
status in Проверка на статусот на вашите датотеки, both in its basic and simplified forms.
While we use it throughout the book, pretty much everything you can do with the
git status command is covered there.
git diff command is used when you want to see differences between any two trees.
This could be the difference between your working environment and your staging area (
git diff by itself), between your staging area and your last commit (
git diff --staged), or between two commits (
git diff master branchB).
We first look at the basic uses of
git diff in Преглед на вашите изведени и неискористени промени, where we show how to see what changes are staged and which are not yet staged.
We use it to look for possible whitespace issues before committing with the
--check option in Започнете упатства.
We see how to check the differences between branches more effectively with the
git diff A...B syntax in Одредување на она што се воведува.
We use it to filter out whitespace differences with
-b and how to compare different stages of conflicted files with
--base in Напредно спојување.
Finally, we use it to effectively compare submodule changes with
--submodule in Starting with Submodules.
git difftool command simply launches an external tool to show you the difference between two trees in case you want to use something other than the built in
git diff command.
We only briefly mention this in Преглед на вашите изведени и неискористени промени.
git commit command takes all the file contents that have been staged with
git add and records a new permanent snapshot in the database and then moves the branch pointer on the current branch up to it.
We first cover the basics of committing in Извршување на промените.
There we also demonstrate how to use the
-a flag to skip the
git add step in daily workflows and how to use the
-m flag to pass a commit message in on the command line instead of firing up an editor.
In Поништување на нештата we cover using the
--amend option to redo the most recent commit.
In Гранење објаснето, we go into much more detail about what
git commit does and why it does it like that.
We looked at how to sign commits cryptographically with the
-S flag in Signing Commits.
Finally, we take a look at what the
git commit command does in the background and how it’s actually implemented in Commit Objects.
git reset command is primarily used to undo things, as you can possibly tell by the verb.
It moves around the
HEAD pointer and optionally changes the
index or staging area and can also optionally change the working directory if you use
This final option makes it possible for this command to lose your work if used incorrectly, so make sure you understand it before using it.
We first effectively cover the simplest use of
git reset in Расклопување на изведена датотека, where we use it to unstage a file we had run
git add on.
We then cover it in quite some detail in Reset Demystified, which is entirely devoted to explaining this command.
git reset --hard to abort a merge in Прекинување на Спојување, where we also use
git merge --abort, which is a bit of a wrapper for the
git reset command.
git rm command is used to remove files from the staging area and working directory for Git.
It is similar to
git add in that it stages a removal of a file for the next commit.
We cover the
git rm command in some detail in Removing Files, including recursively removing files and only removing files from the staging area but leaving them in the working directory with
The only other differing use of
git rm in the book is in Removing Objects where we briefly use and explain the
--ignore-unmatch when running
git filter-branch, which simply makes it not error out when the file we are trying to remove doesn’t exist.
This can be useful for scripting purposes.
git mv command is a thin convenience command to move a file and then run
git add on the new file and
git rm on the old file.
We only briefly mention this command in Moving Files.
git clean command is used to remove unwanted files from your working directory.
This could include removing temporary build artifacts or merge conflict files.
We cover many of the options and scenarios in which you might used the clean command in Cleaning your Working Directory.