Git

Projekty na Githubie - pierwsze kroki

Git jest obecnie najpopularniejszym i najważniejszym systemem kontroli wersji. Powstał ponad 10 lat temu do obsługi rozwoju jądra Linuksa i przez ten czas rozwinął się w cały ekosystem umożliwiający i ułatwiający rozwój oprogramowania. Jednym z elementów tego ekosystemu jest Github, witryna i społeczność używająca jej interfejsu do rozwoju i publikacji programów, skryptów, dokumentów itp. Wersja darmowa do niedawna pozwalała tylko na publiczne repozytoria, ale od 2019 są też dostępne repozytoria prywatne z ograniczeniem do trzech współpracowników. Wg wielu opinii zawartość konta na Gitbhubie jest ważnym elementem CV.

Porównanie gita z innymi systemami kontroli wersji można znaleźć na Wikipedii - Comparison of version-control software

Porownanie Githuba z innymi witrynami tego typu - Comparison of source-code-hosting facilities

Poniżej opis jak zacząć używanie Githuba i gita.

Jako edytor wybrałem VSC dla przykładu bo jest 1) dobry 2) powszechnie używany 3) darmowy, bez ograniczeń 4) dostępny dla wszystkich trzech ważnych systemów operacyjnych (Windows, Linuks. Mac) 5) bez konfiguracji jest przygotowany do gita

1. Założenie konta na Github.com

Jest to tak samo proste jak założenie konta na każdej innej witrynie, wybieramy nazwę użytkownika, podajemy konto pocztowe i wybieramy hasło. To wszystko.

Z ikonki użytkownika w prawym górnym rogu możemy wybrać widok profilu użytkownika, repozytoria, albo ustawienia. W repozytoriach mamy przycisk New, którym tworzymy nowe repozytorium.

2. Zainstalowanie gita na lokalnym komputerze

np.:

 apt-get install git

3. Inicjalizacja gita

W katalogu głównym użytkownika z linii poleceń:

 $ git init

co utworzy katalog .git (będą tam repozytoria lokalne i cała konfiguracja lokalnego repozytorium.

4. Plik konfiguracyjny

Jest to ~/.gitconfig 8.1 Customizing Git - Git Configuration.

5. Konfiguracja

W linii poleceń można ustawić trzy podstawowe, niezbędne rzeczy (jeżeli po config damy parametr -- global, tworzy ustawienie dla wszystkich kont):

 user:~/.git$ git config user.name "user"
 user:~/.git$ git config user.email "user@mail.com"
 user:~/.git$ git config core.editor code
 user:~/.git$ git config --list

Ostatnie polecenie pokazuje treść pliku konfiguracyjnego, warto ją sprawdzić, dlatego, że np. bardzo często użytkownicy popełniają literówkę i zamiast user.email wpisują user.mail czego git nie akceptuje ani nie koryguje.

6. Utworzenie klucza SSH

4.3 Git on the Server - Generating Your SSH Public Key:

 cd ~/.ssh

sprawdzamy czy nie ma już pliku id_rsa

 user:~/.ssh$ ls
 known_hosts

jeżeli nie ma to:

 user:~/.ssh$ ssh-keygen -o
 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/tomek/.ssh/id_rsa): // tu [Enter]                      
 Enter passphrase (empty for no passphrase):  // tu [Enter], bo tworzenie hasła nie jest konieczne
 Enter same passphrase again: 
 Your identification has been saved in /home/user/.ssh/id_rsa.
 Your public key has been saved in /home/user/.ssh/id_rsa.pub.
 The key fingerprint is:
 SHA256:ivxVwUyvZXPTwgqzOiUXYnAEdB3/MYLPNkW1wtJmCb0 user@comp
 The key's randomart image is:
 +---[RSA 2048]----+
 | o  ..   o . . +.|
 | .    .S    + o .|
 |.. + o + . . ..+o|
 |   o    .oB o    |
 |. ...oo     . o E|
 |. . = o . . . *o.|
 |  oo      o.. .  |
 |  . ....+*==.    |
 |  .      + B o   |
 +----[SHA256]-----+

Wygląd kluczy pozostawiłem, ale oczywiście znaki są pozamieniane, pamiętajmy, że każdy klucz prywatny jest tajemnicą, jeżeli nie mamy pewności jaki to jest traktujemy go jak prywatny i nawet publiczny ujawniamy tylko tam gdzie jest to potrzebne.

7. Umieszczenie klucza na Githubie

Klucz jest zawarty w pliku ~/.ssh/id_rsa.pub i kopiujemy go do Github / Ustawienia / Klucz SSH i zapisujemy. Jeżeli nie ma żadnego komunikatu błędu oznacza to, że został zaakceptowany. Zawsze będzie można go skasować i zamienić na inny.

8. Utworzenie repozytorium na Githubie i lokalnej kopii repozytorium

W utworzeniu repozytorium pomaga następująca ściąga z Githuba

 Get started by creating a new file or uploading an existing file. We recommend every repository include a README, LICENSE, and .gitignore.

 …or create a new repository on the command line
 echo "# repository-name" >> README.md
 git init
 git add README.md
 git commit -m "first commit"
 git remote add origin git@github.com:username/repository-name.git
 git push -u origin master
 …or push an existing repository from the command line
 git remote add origin git@github.com:username/repository-name.git
 git push -u origin master
 …or import code from another repository

Jeżeli mamy jakieś repozytoria na Githubie i tworzymy lokalną kopię na komputerze. Tworzenie takiej kopii nie wymaga uwierzytelnienia. Wystarczy polecenie, które tworzy kopię repozytorium w katalogu .git:

 user:~/.git$ git clone git@github.com:user/RepoName

9. Edycja

Uruchamiamy VSC i otwieramy katalog .git. Od razu widać nowe opcje i inny wygląd listy katalogów i plików, wybieramy z danego repozytorium pliki do edycji i dokonujemy zmian.

10. Commit

Linia poleceń jest już w Code, ale wszystko jedno której użyjemy. Commitowanie można zrobić na dwa sposoby, tak jak opisano w tym artykule: Start a new git repository, możemy użyć HTTPS co będzie za każdym razem wymagać podania hasła:

 https://github.com/username/new_repo

Lub SSH, które zapisuje klucz

 git@github.com:username/new_repo

11. .gitignore

Pozostaje jeszcze do rozwiązania jeden problem, otóż VSC pokazuje tysiące oczekujących zmian. Żeby ograniczyć gita tylko do jego własnego katalogu potrzebujemy pliku .gitignore - Git - gitignore Documentation. W najprostszej podanej w dokumentacji formie wyklucza wszystkie katalogi, ograniczając działanie gita do jednego:

 # exclude everything except directory user/.git
 /*
 !/user
 /user/*
 !/user/.git

Odnośniki

Git

Git - artykuły

Youtube

.gitignore

Narzędzia

Git GUI

Po polsku

Github

Github YT

Github CLI

Narzędzia zbudowane w Githubie

Gitlab

Hasła

Github Pages

CI/CD