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 но только в однострочном формате
$ git log --oneline
Тоже что и git log но только в однострочном формате и в виде графа
$ git log --oneline --graph
Показывает историю изменений в однострочном формате, в виде графа для всех веток
$ git log --oneline --graph --all
Показывает изменёные файлы из коммита
$ git diff-tree --no-commit-id --name-only -r 61ea1ed552f06612c2cbeec48c85c23fbf9495c4
Забирает изменение из внешнего репозитория и пытается применить их на текущей ветке (если таковые есть):
$ git pull
Делает тоже что и pull + удаляет те ветки которые были удалены во внешнем репозитории (только в origin):
$ git pull -p
Получает все изменения из внешнего репозитория но не применяет их:
$ git fetch
Удобно для персональных веток (!!!) или еще не закомиченных изменений или приведение в порядок ветки:
$ git rebase origin/master
Можем поменять порядок коммитов или засквошить (то есть обьеденить коммиты):
$ git rebase -i HEAD~5
Удобно для персональных веток (!!!) или еще не запушенных коммитов:
$ git add some_file $ git commit --fixup=7da9c4f09995bb0f02bd77e125fd5d50c5039a1b $ git rebase -i --autosquash 7da9c4f09995bb0f02bd77e125fd5d50c5039a1b~1 # git push -f
Вот и пришло время делать свой гит/джит-сервер: https://github.com/gogs/
Создаем docker-compose.yml:
services: my_gogs: image: gogs/gogs:0.13 ports: # - 10022:22 - 10880:3000 volumes: - ./gogs:/data restart: always networks: - gogs_net networks: gogs_net: driver: bridge
Запускаем командой 'docker compose up'
Открываем на порту 10880 - Делаем найстройки первый раз
Готово можно пользоваться через http