-
1. Почеток
- 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 Заклучок
-
6. GitHub
-
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
10.1 Внатрешноста на Git - Plumbing and Porcelain
ожеби сте прескокнале во ова поглавје од многу порано поглавје, или можеби сте добиле тука по последователно читање на целата книга до оваа точка - во секој случај, ова е местото каде што ќе одиме во текот на внатрешните работи и имплементација на Git . Откривме дека разбирањето на овие информации беше фундаментално важно за да се сфати колку е корисен и моќен Git, но други ни тврдат дека тоа може да биде збунувачки и непотребно сложено за почетници. Така, ја направивме оваа дискусија последно поглавје во книгата за да можете да ја прочитате рано или подоцна во вашиот процес на учење. Ние го оставиме до вас да одлучите.
Сега кога сте тука, ајде да започнете. Прво, ако сеуште не е јасно, Git е суштински содржина адресибилен датотечен систем со VCS кориснички интерфејс напишан на врвот на неа. Ќе дознаете повеќе за тоа што значи тоа во малку.
Во раните денови на Git (најчесто пред 1.5), корисничкиот интерфејс беше многу покомплексен, бидејќи го потенцираше овој датотечен систем, наместо полиран VCS. Во последните неколку години, корисничкиот интерфејс е рафиниран сè додека не биде чист и лесен за употреба како и секој систем таму; сепак, стереотипот се задржува за ран Git UI, кој беше сложен и тешко да се научи.
Слојот-адресибилен слој на датотечниот систем е неверојатно ладен, така што ќе го покриеме првиот во ова поглавје; тогаш, ќе дознаете за транспортните механизми и задачите за одржување на складиштето со кои на крајот можеби ќе треба да се справите.
Plumbing and Porcelain
This book covers primarily how to use Git with 30 or so subcommands such as checkout
, branch
, remote
, and so on.
But because Git was initially a toolkit for a version control system rather than a full user-friendly VCS, it has a number of subcommands that do low-level work and were designed to be chained together UNIX-style or called from scripts.
These commands are generally referred to as Git’s “plumbing” commands, while the more user-friendly commands are called “porcelain” commands.
As you will have noticed by now, this book’s first nine chapters deal almost exclusively with porcelain commands. But in this chapter, you’ll be dealing mostly with the lower-level plumbing commands, because they give you access to the inner workings of Git, and help demonstrate how and why Git does what it does. Many of these commands aren’t meant to be used manually on the command line, but rather to be used as building blocks for new tools and custom scripts.
When you run git init
in a new or existing directory, Git creates the .git
directory, which is where almost everything that Git stores and manipulates is located.
If you want to back up or clone your repository, copying this single directory elsewhere gives you nearly everything you need.
This entire chapter basically deals with what you can see in this directory.
Here’s what a newly-initialized .git
directory typically looks like:
$ ls -F1
config
description
HEAD
hooks/
info/
objects/
refs/
Depending on your version of Git, you may see some additional content there, but this is a fresh git init
repository — it’s what you see by default.
The description
file is used only by the GitWeb program, so don’t worry about it.
The config
file contains your project-specific configuration options, and the info
directory keeps a global exclude file for ignored patterns that you don’t want to track in a .gitignore
file.
The hooks
directory contains your client- or server-side hook scripts, which are discussed in detail in Git Hooks.
This leaves four important entries: the HEAD
and (yet to be created) index
files, and the objects
and refs
directories.
These are the core parts of Git.
The objects
directory stores all the content for your database, the refs
directory stores pointers into commit objects in that data (branches, tags, remotes and more), the HEAD
file points to the branch you currently have checked out, and the index
file is where Git stores your staging area information.
You’ll now look at each of these sections in detail to see how Git operates.