1. Контроль версий представляется так что в каждом ТЕКСТОВОМ файле мы можем посмотреть кто и что менял и когда.
2. Все именения выглядят как patch, то есть в каком файле в после каких строк надо добавить новые строки
3. Некоторое количество изменений то есть коммит (некая минимальная структурная единица информации определенная одним автором как логически завершенные изменения)
4. Мы можем пользоваться гитом локально а также менять/добавлять цдаленные хранилища
5. изменения в гите это коммиты которые представляют собой граф (позже поглядим на них)
Также есть отличная книга по гиту https://git-scm.com/book/ru/v2
Вначале надо установить на систему git.
Под linux на базе дебиан (ubuntu): apt install git
Под windows: скачать с оффициального сайта
Под mac: раньше через brew можно было поставить на текущий момент я без понятия
Есть два типа авторизации в гите (мне известно только о них):
git clone http://user:pass@site.com/repos/repo1 repo1_via_basicauth.git
git clone git@site.com:repos/repo1 repo1_via_ssh.git(но ключ надо предварительно настроить см далее)
repo1_via_basicauth.git - директория в куда сколонировать репозиторий
repo1_via_ssh.git - диреткория в куда сколонировать репозиторий
Сгенерируем ключ (при геннерации указываем путь до ключв ~/.ssh/test и пассфразу оставляем пустую):
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/test Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/seakg/.ssh/test Your public key has been saved in /home/seakg/.ssh/test.pub The key fingerprint is: SHA256:tMSgiRfuDgtU3AOMxZ2zlDmVlTAyHzJy9wCmLUgtCeI your_email@example.com The key's randomart image is: +---[RSA 4096]----+ .... +----[SHA256]-----+
Статья от github: connecting-to-github-with-ssh
Публичный ключ test.pub - содержимое его как раз и закидываем в github / gitlab / bitbucket / gitverse и так далее
в ~/.ssh/config можем прописать какой ключ и для какого сервера надо использовать (удобно для разделения рабочих ключей и личного а также для работы с разными серверами).
Host github.com User git IdentityFile ~/.ssh/test Host 192.168.1.1 User git Port 8022 IdentityFile ~/.ssh/test Host bitbucket.org User git IdentityFile ~/.ssh/test2
~/.ssh/test - будет использоваться для работы с github.com
~/.ssh/test2 - будет использоваться для работы с bitbucket.org
Кроме IdentityFile можно всякого там настроить напрмиер User а остальное лучше погуглить
Также в этом файле можно настраивать ключи для доступа к сервера по ssh (чтобы также можно было использовать разные ключи к разным серверам)
Переодически возникает проблема с правами до конфига и до ключей, потому выставляем такие вот права:
$ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/*
Картинку
$ git status- показывает изменные файлы и файлы добавленные для коммита
$ git branch -a -v- показывает все ветки
$ git log- показывает историю изменений на текущей ветки
$ git log --oneline- тоже что и git log но только в однострочном формате
$ git log --oneline --graph- тоже что и git log но только в однострочном формате и в виде графа
$ git log --oneline --graph --all- показывает историю изменений в однострочном формате, в виде графа для всех веток
$ git diff-tree --no-commit-id --name-only -r 61ea1ed552f06612c2cbeec48c85c23fbf9495c4- показывает измененые файлы из коммита
$ git pull- Забирает изменение из внешнего репозитория и пытается применить их на текущей выбранной ветке
$ git pull -p- делвет тоже что и pull + удаляет те ветки которые были удалены во внешнем репозитории
$ git fetch- получает все изменения из внешнего репозитория но не применяет их
удобно для персональных веток (!!!) или еще не закомиченных изменений или приведение в порядок ветки
$ git rebase origin/master- пересоздает текущую ветку от origin/master (создает новую ветку и копирует все коммиты с текущей в новую)
$ git rebase -i HEAD~5- можем поменять порядок коммитов или засквошить (то есть обьеденить коммиты)
удобно для персональных веток (!!!) или еще не закомиченных изменений
$ git add some_file $ git commit --fixup=7da9c4f09995bb0f02bd77e125fd5d50c5039a1b $ git rebase -i --autosquash 7da9c4f09995bb0f02bd77e125fd5d50c5039a1b~1 # git push -f