Git учебник
Начало работы с Git
Поиск…
замечания
Git - это бесплатная, распределенная система управления версиями, которая позволяет программистам отслеживать изменения кода через «моментальные снимки» (коммиты) в текущем состоянии. Использование коммитов позволяет программистам тестировать, отлаживать и создавать новые функции совместно. Все коммиты хранятся в так называемом «Репозитории Git», который может размещаться на вашем компьютере, на частных серверах или на сайтах с открытым исходным кодом, например, в Github.
Git также позволяет пользователям создавать новые «ветви» кода, которые позволяют различным версиям кода жить рядом друг с другом. Это позволяет сценарии, в которых одна ветвь содержит самую последнюю стабильную версию, другая ветвь содержит набор новых функций, которые разрабатываются, а еще одна ветвь содержит другой набор функций. Гит делает процесс создания этих ветвей, а затем объединяя их вместе, почти безболезненно.
Git имеет 3 разных «области» для вашего кода:
- Рабочий каталог : область, в которой вы будете выполнять всю свою работу (создание, редактирование, удаление и организация файлов)
- Область постановки : область, в которой вы перечислите изменения, внесенные в рабочий каталог
- Репозиторий : где Git постоянно сохраняет изменения, внесенные вами в разные версии проекта
Первоначально Git был создан для управления исходным кодом ядра Linux. Благодаря тому, что они легче, они поощряют мелкие коммиты, разрастание проектов и слияние между вилами и наличие много недолговечных филиалов.
Самое большое изменение для людей, которые привыкли к CVS или Subversion, состоит в том, что каждая проверка содержит не только исходное дерево, но и всю историю проекта. Обычные операции, такие как изменение версий, проверка старых версий, фиксация (для вашей локальной истории), создание ветки, проверка другой ветви, объединение ветвей или файлов патчей, могут выполняться локально без необходимости связываться с центральным сервером. Таким образом, самый большой источник латентности и ненадежности удаляется. Общение с репозиторией «вверх по течению» необходимо только для получения последних изменений и публикации локальных изменений для других разработчиков. Это превращает то, что ранее было техническим ограничением (кто имеет репозиторий владеет проектом) в организационный выбор (ваш «вверх по течению» - это тот, с кем вы хотите синхронизировать).
Версии
Версия | Дата выхода |
---|---|
2,13 | 2017-05-10 |
2,12 | 2017-02-24 |
2.11.1 | 2017-02-02 |
2,11 | 2016-11-29 |
2.10.2 | 2016-10-28 |
2,10 | 2016-09-02 |
2,9 | 2016-06-13 |
2,8 | 2016-03-28 |
2,7 | 2015-10-04 |
2,6 | 2015-09-28 |
2.5 | 2015-07-27 |
2,4 | 2015-04-30 |
2,3 | 2015-02-05 |
2,2 | 2014-11-26 |
2,1 | 2014-08-16 |
2,0 | 2014-05-28 |
1,9 | 2014-02-14 |
1.8.3 | 2013-05-24 |
1,8 | 2012-10-21 |
1.7.10 | 2012-04-06 |
1,7 | 2010-02-13 |
1.6.5 | 2009-10-10 |
1.6.3 | 2009-05-07 |
1,6 | 2008-08-17 |
1.5.3 | 2007-09-02 |
1,5 | 2007-02-14 |
1.4 | 2006-06-10 |
1,3 | 2006-04-18 |
1.2 | 2006-02-12 |
1,1 | 2006-01-08 |
1,0 | 2005-12-21 |
0,99 | 2005-07-11 |
Создайте свой первый репозиторий, затем добавьте и скопируйте файлы
В командной строке сначала убедитесь, что у вас установлен Git:
Во всех операционных системах:
git --version
В UNIX-подобных операционных системах:
which git
Если ничего не будет возвращено или команда не будет распознана, вам может потребоваться установить Git в вашу систему, загрузив и запустив программу установки. См. Домашнюю страницу Git для исключительно четких и простых инструкций по установке.
После установки Git настройте свое имя пользователя и адрес электронной почты . Сделайте это, прежде чем совершать фиксацию.
После установки Git перейдите в каталог, который вы хотите разместить под управлением версии, и создайте пустой репозиторий Git:
git init
Это создает скрытую папку .git
, которая содержит сантехнику, необходимую для работы Git.
Затем проверьте, какие файлы Git добавит в ваш новый репозиторий; этот шаг стоит особого внимания:
git status
Просмотрите полученный список файлов; вы можете указать Git, какой из файлов будет размещен в контроле версий (не добавляйте файлы с конфиденциальной информацией, такой как пароли или файлы, которые просто загромождают репо):
git add <file/directory name #1> <file/directory name #2> < ... >
Если все файлы в списке должны быть доступны всем, у кого есть доступ к репозиторию, одна команда добавит все в ваш текущий каталог и его подкаталоги:
git add .
Это «сценирует» все файлы, которые будут добавлены в элемент управления версиями, готовясь к их совершению в первом коммите.
Для файлов, которые вы хотите никогда не контролировать с помощью версии, создайте и .gitignore
файл с именем .gitignore
перед запуском команды add
.
Зафиксируйте все файлы, которые были добавлены, вместе с сообщением фиксации:
git commit -m "Initial commit"
Это создает новую фиксацию с данным сообщением. Конец - это как сохранение или моментальный снимок всего проекта. Теперь вы можете нажать или загрузить его в удаленный репозиторий, а затем вы можете вернуться к нему, если это необходимо.
Если вы опустите параметр -m
, откроется ваш редактор по умолчанию, и вы сможете редактировать и сохранять сообщение о фиксации там.
Добавление удаленного
Чтобы добавить новый удаленный доступ, используйте команду git remote add
на терминале, в каталоге, в котором хранится ваш репозиторий.
Команда git remote add
принимает два аргумента:
- Удаленное имя, например,
origin
- Удаленный URL-адрес, например
https://<your-git-service-address>/user/repo.git
git remote add origin https://<your-git-service-address>/owner/repository.git
ПРИМЕЧАНИЕ. Перед добавлением удаленного вам необходимо создать необходимый репозиторий в своей службе git, после добавления пульта вы сможете нажать / вытащить фиксации.
Клонировать хранилище
Команда git clone
используется для копирования существующего репозитория Git с сервера на локальный компьютер.
Например, чтобы клонировать проект GitHub:
cd <path where you'd like the clone to create a directory>
git clone https://github.com/username/projectname.git
Чтобы клонировать проект BitBucket:
cd <path where you'd like the clone to create a directory>
git clone https://[email protected]/username/projectname.git
Это создает каталог под названием projectname
на локальном компьютере, содержащий все файлы в удаленном репозитории Git. Сюда входят исходные файлы для проекта, а также подкаталог .git
который содержит всю историю и конфигурацию для проекта.
Чтобы указать другое имя каталога, например MyFolder
:
git clone https://github.com/username/projectname.git MyFolder
Или клонировать в текущем каталоге:
git clone https://github.com/username/projectname.git .
Замечания:
При клонировании в указанный каталог каталог должен быть пустым или не существующим.
Вы также можете использовать команду
ssh
для команды:git clone [email protected]:username/projectname.git
Версия https
версия ssh
эквивалентны. Однако некоторые сервисы хостинга, такие как GitHub, рекомендуют использовать https
вместо ssh
.
Настройка удаленного пула
Если вы клонировали вилку (например, проект с открытым исходным кодом в Github), у вас может не быть push-доступ к восходящему репозиторию, поэтому вам нужна ваша вилка, но вы сможете получить репозиторий вверх по течению.
Сначала проверьте удаленные имена:
$ git remote -v
origin https://github.com/myusername/repo.git (fetch)
origin https://github.com/myusername/repo.git (push)
upstream # this line may or may not be here
Если upstream
уже есть (в некоторых версиях Git), вам нужно установить URL-адрес (в настоящее время он пуст):
$ git remote set-url upstream https://github.com/projectusername/repo.git
Если выше не существует, или если вы хотите добавить друг / вилку коллег ( в настоящее время они не существуют):
$ git remote add upstream https://github.com/projectusername/repo.git
$ git remote add dave https://github.com/dave/repo.git
Общий код
Чтобы поделиться своим кодом, вы создаете репозиторий на удаленном сервере, на который вы скопируете локальный репозиторий.
Чтобы свести к минимуму использование пространства на удаленном сервере, вы создаете пустой репозиторий: тот, который имеет только объекты .git
и не создает рабочую копию в файловой системе. В качестве бонуса вы устанавливаете этот пульт в качестве восходящего сервера, чтобы легко обмениваться обновлениями с другими программистами.
На удаленном сервере:
git init --bare /path/to/repo.git
На локальной машине:
git remote add origin ssh://username@server:/path/to/repo.git
(Обратите внимание, что ssh:
это всего лишь один из возможных способов доступа к удаленному репозиторию.)
Теперь скопируйте локальный репозиторий на удаленный компьютер:
git push --set-upstream origin master
Добавление --set-upstream
(или -u
) создало --set-upstream
(отслеживание), которая используется без аргументов Git-команд, например git pull
.
Настройка имени пользователя и электронной почты
You need to set who you are *before* creating any commit. That will allow commits to have the right author name and email associated to them.
Это не имеет ничего общего с аутентификацией при нажатии в удаленный репозиторий (например, при нажатии в удаленный репозиторий с использованием вашей учетной записи GitHub, BitBucket или GitLab)
Чтобы объявить этот идентификатор для всех репозиториев, используйте git config --global
Это сохранит настройку в файле .gitconfig
вашего пользователя: например $HOME/.gitconfig
или для Windows, %USERPROFILE%\.gitconfig
.
git config --global user.name "Your Name"
git config --global user.email [email protected]
Чтобы объявить идентификатор для одного репозитория, используйте git config
внутри репо.
Это сохранит параметр внутри отдельного репозитория, в файле $GIT_DIR/config
. например /path/to/your/repo/.git/config
.
cd /path/to/my/repo
git config user.name "Your Login At Work"
git config user.email [email protected]
Настройки, хранящиеся в файле конфигурации репозитория, будут иметь приоритет над глобальной конфигурацией при использовании этого репозитория.
Советы: если у вас разные идентификаторы (один для проекта с открытым исходным кодом, один для работы, один для частных репозиториев и т. Д.), И вы не хотите забывать устанавливать правильный для каждого разного репозитория, над которым вы работаете :
Удалить глобальную идентификацию
git config --global --remove-section user.name git config --global --remove-section user.email
Чтобы заставить git искать вашу личность только в настройках репозитория, а не в глобальной конфигурации:
git config --global user.useConfigOnly true
Таким образом, если вы забудете указать свой user.name
и user.email
для данного репозитория и попытайтесь сделать фиксацию, вы увидите:
no name was given and auto-detection is disabled
no email was given and auto-detection is disabled
Изучение команды
Чтобы получить дополнительную информацию о любой команде git, то есть о том, что делает команда, доступных опциях и другой документации, используйте параметр --help
или команду help
.
Например, чтобы получить всю доступную информацию о команде git diff
, используйте:
git diff --help
git help diff
Аналогично, чтобы получить всю доступную информацию о команде status
, используйте:
git status --help
git help status
Если вам нужна только краткая помощь, показывающая значение наиболее используемых флагов командной строки, используйте -h
:
git checkout -h
Настройка SSH для Git
Если вы используете Windows, открываете Git Bash . Если вы используете Mac или Linux, откройте свой терминал.
Прежде чем генерировать SSH-ключ, вы можете проверить, есть ли у вас какие-либо существующие ключи SSH.
Перечислите содержимое вашего каталога ~/.ssh
:
$ ls -al ~/.ssh
# Lists all the files in your ~/.ssh directory
Проверьте список каталогов, чтобы узнать, есть ли у вас общедоступный ключ SSH. По умолчанию имена открытых ключей являются следующими:
id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub
Если вы видите существующую пару открытых и закрытых ключей, которые вы хотели бы использовать на своей учетной записи Bitbucket, GitHub (или аналогичной), вы можете скопировать содержимое файла id_*.pub
.
Если нет, вы можете создать новую пару открытого и закрытого ключей со следующей командой:
$ ssh-keygen
Нажмите клавишу Enter или Return, чтобы принять местоположение по умолчанию. Введите и повторно введите парольную фразу при появлении запроса или оставьте его пустым.
Убедитесь, что ваш SSH-ключ добавлен в ssh-agent. Запустите ssh-agent в фоновом режиме, если он еще не запущен:
$ eval "$(ssh-agent -s)"
Добавьте ключ SSH к агенту ssh. Обратите внимание, что вам нужно, чтобы te заменил id_rsa
в команде именем вашего файла закрытого ключа :
$ ssh-add ~/.ssh/id_rsa
Если вы хотите изменить выше существующий репозиторий с HTTPS на SSH, вы можете запустить следующую команду:
$ git remote set-url origin ssh://[email protected]:7999/projects/your_project.git
Чтобы клонировать новый репозиторий через SSH, вы можете запустить следующую команду:
$ git clone ssh://[email protected]:7999/projects/your_project.git
Установка Git
Давайте перейдем к использованию Git. Прежде всего, вы должны установить его. Вы можете получить его несколькими способами; два основных из них - установить его из источника или установить существующий пакет для вашей платформы.
Установка из источника
Если это возможно, обычно полезно установить Git из источника, потому что вы получите самую последнюю версию. Каждая версия Git имеет тенденцию включать полезные усовершенствования пользовательского интерфейса, поэтому получение последней версии часто является лучшим маршрутом, если вам удобнее компилировать программное обеспечение из источника. Кроме того, многие дистрибутивы Linux содержат очень старые пакеты; поэтому, если вы не находитесь на самом современном дистрибутиве или не используете backports, лучше всего установить установку из источника.
Чтобы установить Git, вам нужно иметь следующие библиотеки, которые Git зависит от: curl, zlib, openssl, expat и libiconv. Например, если вы используете систему с yum (например, Fedora) или apt-get (например, на основе Debian), вы можете использовать одну из этих команд для установки всех зависимостей:
$ yum install curl-devel expat-devel gettext-devel \
openssl-devel zlib-devel
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
libz-dev libssl-dev
Когда у вас есть все необходимые зависимости, вы можете перейти к последнему снимку с веб-сайта Git:
http://git-scm.com/download Затем скомпилируйте и установите:
$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
После этого вы также можете получить Git через Git для обновлений:
$ git clone git://git.kernel.org/pub/scm/git/git.git
Установка на Linux
Если вы хотите установить Git на Linux через двоичный установщик, вы можете сделать это с помощью основного инструмента управления пакетами, который поставляется вместе с вашим дистрибутивом. Если вы используете Fedora, вы можете использовать yum:
$ yum install git
Или, если вы используете дистрибутив на базе Debian, например Ubuntu, попробуйте apt-get:
$ apt-get install git
Установка на Mac
Существует три простых способа установки Git на Mac. Самый простой способ - использовать графический установщик Git, который вы можете загрузить со страницы SourceForge.
http://sourceforge.net/projects/git-osx-installer/
Рисунок 1-7. Установка Git OS X. Другой важный способ - установить Git через MacPorts ( http://www.macports.org) . Если у вас установлен MacPorts, установите Git через
$ sudo port install git +svn +doc +bash_completion +gitweb
Вам не нужно добавлять все дополнительные функции, но вы, вероятно, захотите включить + svn, если вам когда-либо понадобится использовать Git с репозиториями Subversion (см. Главу 8).
Homebrew ( http://brew.sh/) - еще одна альтернатива установке Git. Если у вас установлен Homebrew, установите Git через
$ brew install git
Установка в Windows
Установка Git на Windows очень проста. Проект msysGit имеет одну из более простых процедур установки. Просто загрузите exe-файл установщика с страницы GitHub и запустите его:
http://msysgit.github.io
После его установки у вас есть версия командной строки (включая клиент SSH, который будет полезен позже) и стандартный графический интерфейс.
Примечание по использованию Windows: вы должны использовать Git с установленной оболочкой msysGit (стиль Unix), она позволяет использовать сложные строки команды, приведенные в этой книге. Если вам по какой-то причине необходимо использовать родную консоль командной строки Windows / командной строки, вам нужно использовать двойные кавычки вместо одиночных кавычек (для параметров с пробелами в них), и вы должны указать параметры, заканчивающиеся на circumflex accent (^ ), если они являются последними в строке, так как это символ продолжения в Windows.