====== 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