Əsas səhifə > Git/GitHub, Linux > GİT basics

GİT basics

GİT-i install etdikdən sonra, işə başlayaq. Daha əvvəlki yazımızda install haqqında danışmışdıq.
İndi isə özümüz üçün yeni work directory yaradaq və onun üzərində işləyək. Komandaları ardıcıllıqla keçirək:

[root@bsnew ~]# cd /home/
[root@bsnew home]# mkdir git_test
[root@bsnew home]# cd git_test/
[root@bsnew git_test]# git init
Initialized empty Git repository in /home/git_test/.git/

git init komandası bizim direktoriyanı GİT-ə əlavə edir. Yəni, biz deyirik ki, bu direktoriyanı versiyalamağa başla.
Lakin bizim direktoriyamız boş olduğu üçün statusa baxdıqda deyir ki, nothing to commit.

[root@bsnew git_test]# git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)

nümunə README faylını yaradaq və içinə hər hansı məlumat yazaq.

[root@bsnew git_test]# vim README

İndi yenidən statusa baxdıqda:

[root@bsnew git_test]# git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       README
nothing added to commit but untracked files present (use "git add" to track)

Status dəyişdi, yeni status-da untracked faylın olduğunu bildirir.
bu faylı tracked etmək üçün onu add etməliyik:

[root@bsnew git_test]# git add README

Bir daha statusa baxaq:

[root@bsnew git_test]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file:   README
#

Gördüyünüz kimi yeni faylı gördü, dolayısı ilə artıq bu fayl track olunur.

İndi isə gəlin həmin bu README faylına əlavə sətrlər qeyd edək və faylı save edək.
Əvvəlki halı:

[root@bsnew git_test]# cat README
Test

Yeni halı:

[root@bsnew git_test]# cat README
Test
TEST2
TEST3

Statusu bir daha yoxlayaq:

[root@bsnew git_test]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file:   README
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   README
#

Track olunan README faylımızda olan dəyişiklik dərhal detect olundu və gördüyümüz kimi, modified yazılıb.
Lakin diqqətlə oxuduqda görürük ki, Changes not staged for commit yazılıb.
Bu mo deməkdir ki, bu yeni yazdığımız dəyişikliklər gələn dəfəki commit-də yer almayacaq. Buna diqqət yetirmək lazımdır.
Faylı Stage hala gətirə bilməyimiz üçün onu bir daha git add etməliyik. Ümumiləşdirdikdə görürük ki, git add həm hər hansı yeni faylı track etdirir həmçinin də, unstage halda olan faylı stage hala gətirir. Stage halda olan fayl commit-ə hazır fayl sayılır.

Sınayaq:

[root@bsnew git_test]# git add README
[root@bsnew git_test]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file:   README
#

Changes to be committed özündə commit olunacaq, son halda olan faylı göstərir.

Belə bir sual yaranır. Deyək ki, biz faylda dəyişiklik edirik və daha sonra bilmək istəyirik ki, hansı dəyişiklikləri etmişik.
Bunun üçün git diff-dən istifadə edəcik.

QEYD: git diff yalnız unstage halda olan fayldaki dəyişiklikləri göstərir

Sınayaq:

[root@bsnew git_test]# git diff
diff --git a/README b/README
index b3dd4d0..74ebf90 100644
--- a/README
+++ b/README
@@ -2,3 +2,6 @@ Test
 TEST2
 TEST3
 TEST4
+TEST5
+TEST6
+TEST7

Gördüyümüz
+TEST5
+TEST6
+TEST7

bizim etdiyimiz və unstage olunmuş dəyişikliklərdir.
Əgər biz unstage halındakı faylı, yuxarıdakı qaydada stage hala gətirsək git diff heç bir şey göstərməyəcək:

[root@bsnew git_test]# git add README

[root@bsnew git_test]# git diff
[root@bsnew git_test]#

Faylımız Stage halda commit-ə hazır olduğu üşün biz onu commit edə bilərik:

[root@bsnew git_test]# git commit
[master (root-commit) 96ff1ed] First Commit
 1 file changed, 7 insertions(+)
 create mode 100644 README

git commit run etdikdə bizim core.editor-da təyin etdiyimiz sevimli editorumuz açılır.
Və biz orda Fisr Commit yazmaqla ilk commitimizi elan edirik.
7 sətr insert olunub 1 faylımız var.

ÜMUMİLƏŞDİRMƏ:
Hər hansı yeni fayl əlavə edildikdə o `UNTRACKED` olaraq qeyd olunur. Faylı `TRACKED` etmək üçün bizim komandamız
git add file_name-dir.
TRACK olunmuş fayl əsas etibarı ilə 2 halda olur STAGED və UNSTAGED. UNSTAGED halında , commit zamanı dəyişikliklər commit olunmayacaq. Dolayısı ilə commit-dən əvvəl biz faylı STAGE hala gətirməliyik.
Bunun üçün də komandamız git add file_name-dır. STAGE olunmuş faylı commit edə bilərik.

Təbii ki, bəzən yorucu olur hər dəfə git add edib faylları STAGE hala gətirmək. STAGİNG area-nı skip etmək mümkündür:

README faylına əlavələr edək:

[root@bsnew git_test]# git diff
diff --git a/README b/README
index 74ebf90..e879f2e 100644
--- a/README
+++ b/README
@@ -5,3 +5,6 @@ TEST4
 TEST5
 TEST6
 TEST7
+TEST8
+TEST9
+TEST10

Adi şəkildə git commit etsək təbii ki, bu dəyişikliklər commit olunmayacaq çünki biz faylımızı STAGE etməmişik. Bir daha git add etmədən commit etmək üçün:

[root@bsnew git_test]# git commit -a -m "Added new Lines"
[master 9d8ffd2] Added new Lines
 1 file changed, 3 insertions(+)

[root@bsnew git_test]# git status
# On branch master
nothing to commit, working directory clean

Faylları necə silək? GİT üçün faylın silinməsi, həmin faylın stage area-dan silinməsi deməkdir. Ola bilsin ki, heç o fayl diskdən silinməsin lakin GİT onu görməsin. Bu faydalı ola bilər. Məsələn, biz istəyirik ki fayl olduğu kimi qalsən lakin GİT onu görməsin.
İlk öncə gəlin faylı birbaşa silək və bəzi testlər aparaq:

[root@bsnew git_test]# rm README
rm: remove regular file `README'? y

İndi isə git statusa baxaq:

[root@bsnew git_test]# git status
# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       deleted:    README
#
no changes added to commit (use "git add" and/or "git commit -a")

Faylı birbaşa silməyimizə baxmayaraq GİT həmin faylı unstaged olaraq görür. Faylı necə deyərlər Gİt-dən də silmək üçün:

[root@bsnew git_test]# git rm README
rm 'README'

[root@bsnew git_test]# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    README
#

Status dəyişdi Changes to be committed. Dolayısı ilə əgər indi biz commit etmiş olsaq daha o faylı görməyəcik.

[root@bsnew git_test]# git commit

[master 6a9ee34] Deleted File
 1 file changed, 10 deletions(-)
 delete mode 100644 README

Bəli diqqətlə oxusaq görürük ki, 1 file changed 10 deletions(-). Faylımız silindi.

[root@bsnew git_test]# git status
# On branch master
nothing to commit, working directory clean

Bəli biz faylımızı həm diskdən, həm də GİT-dən silmiş olduq.
Lakin yuxarıda dediyim kimi, hərdən bizə lazım olur ki, fayl silinməsin sadəcə elə edək ki, GİT onu görməsin.
Bunu test edək:

[root@bsnew git_test]# touch readme.txt
[root@bsnew git_test]# nano  readme.txt
~ Yeni nəsə yazın ~

[root@bsnew git_test]# git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       readme.txt
nothing added to commit but untracked files present (use "git add" to track)

[root@bsnew git_test]# git add readme.txt

[root@bsnew git_test]# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   readme.txt
#

[root@bsnew git_test]# git commit -m "Newfile"
[master e4adafe] Newfile
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt

[root@bsnew git_test]# git rm --cached readme.txt
rm 'readme.txt'

[root@bsnew git_test]# ls
readme.txt

[root@bsnew git_test]# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    readme.txt
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       readme.txt

[root@bsnew git_test]# git commit
[master 095efb1] File Modified
 1 file changed, 1 deletion(-)
 delete mode 100644 readme.txt

[root@bsnew git_test]# git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       readme.txt
nothing added to commit but untracked files present (use "git add" to track)

Gördüyümüz kimi, file artıq untracked olundu lakin, diskden silinmədi. Bizə də lazım olan elə bu idi.

* Faylların adının dəyişdirilməsi

Rename etmək üçün git mv komandasından istifadə etmək lazımdır.

[root@bsnew git_test]# git mv readme.txt readit.txt

[root@bsnew git_test]# ls
readit.txt

[root@bsnew git_test]# cat readit.txt
HELLo world

[root@bsnew git_test]# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       renamed:    readme.txt -> readit.txt
#

[root@bsnew git_test]# git commit
[master e1989bb] Renamed
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename readme.txt => readit.txt (100%)

[root@bsnew git_test]# git status
# On branch master
nothing to commit, working directory clean

Dərhal faylın rename olunduğu detect olundu və commitdən sonra artıq təsdiqləndi.

Fikrimcə ilkin olaraq bu qədər məlumat kifayət edər.
Təşəkkürlər ))

Kateqoriyalar: Git/GitHub, Linux
  1. Hələlik heç bir şərh yoxdur
  1. No trackbacks yet.

Bir cavab yazın

Sistemə daxil olmaq üçün məlumatlarınızı daxil edin və ya ikonlardan birinə tıklayın:

WordPress.com Loqosu

WordPress.com hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Twitter rəsmi

Twitter hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Facebook fotosu

Facebook hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Google+ foto

Google+ hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

%s qoşulma

%d bloqqer bunu bəyənir: