Git је популарни систем за контролу верзија кода у софтверским пројектима. Креирао га је Линус Торвалдс 2005. године а одржава га Јунио Хамано. Користи се за праћење промена у коду, праћење ко је направио промене, сараднички рад приликом кодирања и сл. Неки од задатака који се реализују овим системом су:
- Управљање софтверским пројектима путем репозиторијума.
- Клонирање пројекта како би се радило на локалној копији.
- Контрола и праћење промена са staging и commit операцијама.
- Гранање и спајање како би се омогућио рад на различитим деловима и верзијама пројекта.
- Преузимање најновије верзије пројекта у локалну копију.
- Слање локалних ажурирања на главни пројекат.
Преузимање и инсталација
На страници Download for Windows преузми инсталер за најновију 64-битну верзију Git for Windows.
Провера исправности инсталације
Покрени PowerShell па провери да ли је Git инсталиран и да ли је у системској путањи уносом команде:
PS C:\> git --version
Ако јесте, добићеш поруку:
git version 2.42.0.windows.2
Конфигурација
Git конфигуришеш додавањем корисничког имена и адресе електронске поште којом си се регистровао на github.com.
PS C:\> git config --global user.name "ajti"
PS C:\> git config --global user.email "ajti@teslavs.edu.rs"
Креирање директоријума и иницијализација
Нека је задатак да креираш веб сајт у директоријуму Projekat
на C:
диску и у истом директоријуму иницијализујеш Git репозиторијум (у сленгу гит-репо).
PS C:\> mkdir Projekat # Kreiraj direktorijum Projekat
PS C:\> cd Projekat # Promeni trenutni radni direktorijum
PS C:\Projekat> git init # U direktorijumu inicijalizuj GIT
Ако си ово успешно урадио добићеш поруку:
Initialized empty Git repository in C:/Projekat/.git/
Не треба да те буни обрнута коса црта у путањи (Git је иницијално креиран за Linux).
Додавање фајлова у сценарио (стејџовање)
У директоријуму Projekat
креирај фајл index.html
, на пример, користећи Visual Studio Code. Покрени vscode помоћу следеће команде:
PS C:\Projekat> code .
Креирај фајл index.html
са следећи садржајем…
<!DOCTYPE html>
<html>
<head>
<title>My First Web Page</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<p>Hello, World!</p>
</body>
</html>
…па сачувај промене. Можеш да провериш да ли је фајл успешно сачуван у директоријуму Projekat
уносом следеће команде:
PS C:\Projekat> ls
Ако си успешно сачувао фајл добићеш следећу поруку:
Directory: C:\Projekat
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 11/3/2023 8:00 AM 130 index.html
Сада се фајл index.html
налази у директоријуму пројекта, али га Git не прати. Ову тврдњу можеш проверити уносом команде…
PS C:\Projekat> git status
што ће резултовати поруком:
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
index.html
nothing added to commit but untracked files present (use "git add" to track)
Значи, Git види да у директоријуму постоји фајл index.html
, али га не прати. Да би Git почео да прати неки фајл, фајл треба додати у сценарио (енгл. Staging Environment), уносом команде:
PS C:\Projekat> git add index.html
Каже се у сленгу да је фајл “стејџован“.
Један софтверски пројекат често се састоји из више фајлова. На пример, у овом пројекту треба да креираш и фајл style.css
у којем је дефинисан стил за страницу index.html
…
body {
font-family: Consolas, monospace;
background-color: #000000;
margin: 0;
padding: 10px;
}
p {
color: #4AF626;
}
…и фајл са техничком документацијом пројекта README.md
:
# Git tutorijal
Ovaj repozitorijum je kreiran za Hello, World! **Git tutorijal**.
Velimir Radlovački
Školski centar "Nikola Tesla"
Vršac
Novembar 2023.
Да би Git почео да прати све фајлове које си креирао у директоријуму Projekat
, фајлове можеш да стејџујеш уносом команде…
PS C:\Projekat> git add --all
…или:
PS C:\Projekat> git add --A
Сада се уносом команде git status
добија следећи резултат:
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
new file: index.html
new file: style.css
Предавање сценарија у репозиторијум (комитовање)
Када си завршио са радом на фајловима, сценарио треба да предаш у репо уносом команде…
PS C:\Projekat> git commit -m "Prvo predavanje fajlova u repozitorijum"
…где ће се исписати порука:
[master (root-commit) 4607853] Prvo predavanje fajlova u repozitorijum
3 files changed, 26 insertions(+)
create mode 100644 README.md
create mode 100644 index.html
create mode 100644 style.css
Каже се у сленгу да је сценарио “комитован” у репозиторијум (енгл. Staging Environment has been committed to repository).
Понекад се стејџовање прескаче и промене се одмах комитују (нарочито ако су у питању мале промене). Нпр. измени index.html
тако што ћеш додати још један пасус текста:
<!DOCTYPE html>
<html>
<head>
<title>My First Web Page</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<p>Hello, World!</p>
<p>Novi pasus teksta...</p>
</body>
</html>
Уносом команде git status
види се да нема промена у сценарију, а да је фајл модификован:
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: index.html
no changes added to commit (use "git add" and/or "git commit -a")
Промење у фајлу се могу директно комитовати у репо уносом команде:
git commit -a -m "Dodat pasus teksta u index.html"
Овим је прескочено стејџовање и промене су директно комитоване у репо. Прескакање стејџовања није препоручљиво!
Уносом команде…
PS C:\Projekat> git log
…могу се пратити комитовања у репоу. У овом случају, лог ће изгледати овако:
commit 48a3f48f24bb7621d06ec26f4a01854ab52ce046 (HEAD -> master)
Author: ajti <ajti@teslavs.edu.rs>
Date: Fri Nov 3 12:12:44 2023 +0100
Dodat pasus teksta u index.html
commit 46078538597cb9c5a33c1eebf05dbdf0e1198aee
Author: ajti <ajti@teslavs.edu.rs>
Date: Fri Nov 3 11:59:14 2023 +0100
Prvo predavanje fajlova u repozitorijum