Skip to content

Git основе

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