Иди на текст

Чување измена на постојећим фајловима

У претходној лекцији си направио свој први комит, којим си у репозиторијум Geometrija сачувао фајлове README.md, index.html, styles.css и script.js. У пракси ће много чешће бити ситуација у којима треба да сачуваш измене на фајловима који су већ део репозиторијума.

Нека је задатак да у фајлу README.md, уместо линије текста где је написано твоје име John Doe додаш један празан ред и текст...

Школски центар "Никола Тесла", Вршац
Смер: Техничар информационих технологија
Одељење: III2
Ученик: John Doe

...и ту измену сачуваш у репозиторијуму. Отвори README.md у едитору и измени текст како је тражено. Ако сада извршиш команду git status, Git ће те обавестити да постоје измене које нису стejџоване:

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:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

Порука те обавештава да су фајлови измењени, али не и шта је тачно измењено. Да би видео детаљан преглед измена, користи команду:

git diff

Добићеш поруку сличну овој:

diff --git a/README.md b/README.md
index 4647d47..f69f6e9 100644
--- a/README.md
+++ b/README.md
@@ -2,4 +2,9 @@

 Веб апликација за рачунање треће странице, обима и површине правоуглог
 троугла помоћу Питагорине теореме.
-John Doe
+
+Школски центар "Никола Тесла", Вршац
+Смер: Техничар информационих технологија
+Одељење: III2
+Ученик: John Doe
+

Линије које почињу знаком - су линије које су уклоњене, линије које почињу знаком + су линије које су додате, док линије без знака представљају линије које нису измењене, а исписују се ради лакше оријентације.

Стejџовање и комитовање измена

Поступак је исти као и код нових фајлова - прво стejџујеш измене, па их онда комитујеш.

git add README.md

Ако сада желиш да провериш шта тачно улази у следећи комит, можеш да искористиш опцију --staged (или, еквивалентно, --cached) уз git diff:

git diff --staged

Ова команда ће приказати исти diff, само за измене које се налазе у секцији Changes to be committed, односно оне које ће заиста бити сачуване следећим комитом. Ово је нарочито корисно навика - да увек пре комитовања прегледаш шта си тачно стejџовао, како не би случајно сачувао нешто што ниси намеравао. git status ће сада приказати следећу поруку:

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md

Када си задовољан прегледом, можеш да комитујеш измене...

git commit -m "Dodati podaci o učeniku"

...што ће резултирати поруком:

[master 8bfa4c1] Dodati podaci o učeniku
 1 file changed, 6 insertions(+), 1 deletion(-)

Прескакање стejџовања

Нека је следећи задатак да у заглављу фајла index.html додаш следећу линију:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

Отвори index.html у едитору и измени HTML како је тражено. Пошто је index.html фајл који Git већ прати (јер си га већ једном раније комитовао), не мораш обавезно да га прво стejџујеш па онда комитујеш - та два корака можеш да спојиш у један, коришћењем опције -a уз команду git commit...

git commit -a -m "Dodat novi meta element"

...што ће резултирати поруком:

[master b15e3fb] Dodat novi meta element
 1 file changed, 1 insertion(+)

Опција -a аутоматски стejџује све измене на фајловима које Git већ прати, пре него што изврши комит. Ово ти уштеди корак, али постоји важно ограничење - ова опција не обухвата нове, нестejџоване фајлове (оне које Git још увек не прати). Ако у оквиру пројекта додаш нови фајл, њега и даље мораш ручно да стejџујеш командом git add, без обзира на то да ли касније користиш -a или не.