====== Git i Github ======
Podstawy pracy z systemem kontroli wersji Git. Pełną dokumentację znajdziesz na stronie https://git-scm.com/docs
Zobacz także: [[GitLab]].
===== Podstawy =====
Instalujemy Gita.
apt-get update
apt-get install git
Tworzymy katalog dla projektu i w tym katalogu wołamy:
git init
Oto najważniejsze polecenia, które umożliwiają rozpoczęcie pracy z Gitem:
* ''git pull'' - pobranie stanu projektu z Githuba. To samo co ''fetch'' i ''merge''
* ''git add .'' - dodaje wszystkie pliki
* ''git commit -m "opis_zmiany"''
* ''git checkout '' - zmiana brancha, na który "patrzy" Git
* ''git remote -v'' - pokazuje remote'y (zdalne repozytoria)
* ''git branch -r''
===== Własny serwer repozytoriów =====
Tworzymy użytkownika ''git''.
useradd --create-home --shell /bin/bash git
su - git
cd .ssh
Jeżeli chcemy uniemożliwić użytkownikowi korzystanie z konsoli, możemy później zmienić powłokę na ''/user/sbin/nologin''.
Każdy z użytkowników musi wygenerować parę kluczy. W Windows klucz prywatny powinien się znaleźć w ''C:\Users\\.ssh\id_rsa''.
Jeżeli chcesz ustawić hasło, użyj opcji -o. Dzięki temu klucz prywatny będzie bardziej odporny na ataki [[brute-force]].
ssh-keygen -o
Użytkownik musi przesłać klucz publiczny do administratora serwera. Klucz publiczny należy umieścić na serwerze w ''/home/git/.ssh/authorized_keys''.
Tworzymy "gołe" (bare) repozytorium.
cd /srv/git
mkdir project.git
cd project.git
git init --bare
Na komputerze użytkownika można zrobić ''clone'' w następujący sposób:
git clone git@gitserver:/srv/git/project.git
Notatki sporządzono na podstawie: https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server.
===== Dodanie remote służącego tylko do fetchowania =====
git remote add upstream git@github.com:usi-systems/easytrace.git
git remote set-url --push upstream DISABLE
Przykładowy scenariusz użycia.
git checkout mybranch
git add .
git commit -m "My new feature"
Przesuwamy nasz commit na wierzch stosu commitow z upstream.
git rebase upstream/public/6.8.0
Ostatecznie wysyłamy na swój serwer.
git push origin
===== Prywatny fork publicznego repozytorium =====
https://gist.github.com/0xjac/85097472043b697ab57ba1b1c7530274