GIT

Материал из megapuper
Перейти к: навигация, поиск

.gitconfig

Конфигурация git

# git config --global user.name "Vasya Pupkin"
# git config --global user.email "vasya@mail.ru"

Просмотр конфигурации

# git config -l
user.name=Vasya Pupkin
user.email=vasya@mail.ru


GIT INIT

Создание репозитория


Команда git init создает в директории пустой репозиторий в виде директории .git, где и будет в дальнейшем храниться вся информация об истории коммитов, тегах, ходе разработки проекта

# mkdir myproject
# cd project
# git init


GIT STATUS

Текущее состояние индекса.


Можно увидеть какие будут произведены изменения при применении commit. Также покажет файлы с неразрешенными конфликтами слияния и файлы игнорируемые git

# git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)


GIT ADD

Добавляет содержимое рабочей директории в индекс (staging area) для последующего коммита


Внести в индекс - временное хранилище - изменения, которые затем войдут в коммит(без точки - из всей рабочей области, с точкой — только текущий путь)

# git add .

Внести в индекс - временное хранилище - изменения, которые затем войдут в коммит, включая новые файлы(без точки - из всей рабочей области, с точкой — только текущий путь)

# git add -A .


GIT BRANCH

Создание, перечисление и удаление веток


Добавить новую ветку

# git branch <имя_ветки>

Удалить ветку

# git branch -d <имя_ветки>

Переименование ветки

# git branch -m new-name-branch

Если в репозитории есть другие ветки, их можно увидеть так(активная ветка обозначена звёздочкой)

# git branch -a
* master
 remotes/origin/HEAD -> origin/master
 remotes/origin/Stamps_zebra
 remotes/origin/master
 remotes/origin/standart_xlsx


GIT CHECKOUT

Переключение между ветками, извлечение отдельных файлов из истории коммитов


Переключиться в ветку

# git checkout some-other-branch

Создать ветку и переключиться в неё

# git checkout -b some-other-new-branch

Вернуть файл из коммита

# git checkout HEAD files/default/backup-data-cargo.sh


GIT CLONE

Создание копии (удаленного) репозитория


Клонировать репозиторий с той же машины в директорию myrepo

# git clone /home/username/project /myrepo

Клонируем репозиторий через протокол git

# git clone git@gihub.com:/repo-name.git /myrepo

Клонируем репозиторий через ssh

# git clone ssh://git@github.com/repo-name /myrepo

Клонируем репозиторий через https

# git clone https://github.com/repo-name /myrepo


GIT COMMIT

Берёт все данные, добавленные в индекс с помощью git add, и сохраняет их слепок во внутренней базе данных, а затем сдвигает указатель текущей ветки на этот слепок


Выполняет коммит

# git commit -m "комментарий"


GIT LOG

Служит для просмотра изменений репозитория. По умолчанию, без аргументов, git log выводит список коммитов созданных в данном репозитории в обратном хронологическом порядке (самые последние коммиты показываются первыми

Подробная информация в виде патчей по файлам из коммитов

# git log -p
diff --git a/files/default/backup-data-zappstore-eu.sh b/files/default/backup-data-zappstore-eu.sh
new file mode 100755
index 0000000..0b6cd3b
--- /dev/null
+++ b/files/default/backup-data-zappstore-eu.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+DIR='/srv/www/zappstore/data/'
+USER='deployer'
+DS='172.16.2.41'
+BACKUP_DIR='/var/lib/vz/storagebox2'

Вывод под каждым коммитом списка измененных файлов, количество измененных файлов, количество добавленных и удаленных строк в этих файлах и ниже краткую статистику по каждому коммиту

# git log --stat
commit b5a1eff79966358fbb7e0affbb7974b26d9deb63
Author: Evgeny Onopriyko <finston1978@gmail.com>
Date:   Fri Jun 10 13:05:10 2016 +0300
   update
files/default/backup-data-zappstore-eu.sh |  9 +++++++++
files/default/backup-data-zappstore-us.sh |  9 +++++++++
files/default/backup-data-zapsptore.sh    |  9 ---------
metadata.rb                               |  2 +-
recipes/cargo.rb                          |  2 +-
recipes/zappstore.rb                      | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
6 files changed, 80 insertions(+), 35 deletions(-)

Вывод данных о каждом коммите в одну строку

# git log --pretty=oneline
f3f7a446f58a245f5426fbf71790540148313e3f update
6df3a30e775995d311f30b3cc74a2ad2b59a6267 Update zappstore.rb
19c78b5a0b599ab2fb78c0e5b0b3ea812636536e Update default.rb


GIT PULL

Синхронизация текущей ветки с репозиторием


Забрать изменения из репозитория и слить с активной веткой

# git pull

Забрать изменения из определенного репозитория

# git pull project


GIT PUSH

Внесение изменений в удаленный репозиторий


Отправить изменения в удаленную ветку, созданную при клонировании по умолчанию

# git push

Отправить изменения из ветки master в ветку experimental удаленного репозитория

# git push ssh://github.com/project.git master:experimental

В удаленном репозитории origin удалить ветку experimental

# git push origin :experimental

Отправить изменения в удаленную ветку master репозитория origin(синоним репозитория по умолчанию) из локальной ветки master

# git push origin master:master


GIT REMOTE

Имя удаленного репозитория

# git remote
origin

Информация о удаленном репозитории

# git remote show origin

Изменить origin url удалённого репозитория

# git remote set-url origin git@gitlab.ru:SIP/Back.git


Последние коммиты текущей ветки

# git show
commit b5a1eff79966358fbb7e0affbb7974b26d9deb63
Author: Evgeny Onopriyko <finston1978@gmail.com>
Date:   Fri Jun 10 13:05:10 2016 +0300
   update
diff --git a/files/default/backup-data-zappstore-eu.sh b/files/default/backup-data-zappstore-eu.sh
new file mode 100755
index 0000000..0b6cd3b
--- /dev/null
+++ b/files/default/backup-data-zappstore-eu.sh
@@ -0,0 +1,9 @@
+#!/bin/bash