Post

06-İleri Seviye Komutlar 1

06-İleri Seviye Komutlar 1

Merge

  • Farklı branch’lerde yapılan değişiklikleri birleştirmek için kullanılır.
1
2
3
A - B - E      main
     \
      C - D    other_branch
1
2
3
A - B - E - F      main
     \     /
      C - D        other_branch

Örnek Bir Senaryo

  • add_classics branch’inde classic.csv dosyasını güncelleyelim.
1
nano classic.csv
1
Fight Club, David Fincher ,1999
1
2
git add classic.csv
git commit -m "D: Add classic.csv"
  • main branch’ine geçelim ve contents.md dosyasını oluşturalım.
1
git switch main
1
nano contents.md
1
2
3
4
# contents

- titles.md: The movie titles in the WebFlyx collection
- quotes: A directory of files containing memorable quotes from movies
1
2
git add contents.md
git commit -m "E: Add contents.md"
  • add_classics branch’ini main branch’ine birleştirelim.
1
git merge add_classics
  • Etkileşimli editör açıklacak ve bir commit mesajı girmeniz istenecektir. Aşağıdaki gibi bir commit mesajı girebilirsiniz.
1
F: Merge add_classics branch
1
git log --oneline --decorate --graph --parents
1
2
3
A - B - E - F      main
     \     /
      C - D        add_classics

Rebase

  • Farklı branch’lerde yapılan değişiklikleri birleştirmek için kullanılır. Fakat merge‘den farklı olarak, rebase işlemi sonucunda commit geçmişi değişir.
1
2
3
A - B - C    main
   \
    D - E    feature_branch
1
2
3
A - B - C         main
         \
          D - E   feature_branch
  • feature_branch’ini main branch’ine rebase işlemi uygulayarak birleştirelim.
  • Öncelikle feature_branch’ine geçelim.
1
git switch -c feature_branch
  • Bir örnek dosya oluşturalım.
1
nano color.py
1
print("Color dosyası")
1
2
git add color.py
git commit -m "H: Add color.py"
1
nano model.py
1
print("Model dosyası")
1
2
git add model.py
git commit -m "I: Add model.py"
  • Ardından main branch’ine geçelim.
1
git switch main
  • Örnek bir dosya oluşturalım.
1
nano test.py
1
print("Hello, World!")
1
2
git add test.py
git commit -m "G: Add test.py"
  • Repo commit geçmişi aşağıdaki gibi olacaktır.
1
2
3
4
A - B - E - F - G    main
     \     /  \     
      C - D     H - I    feature_branch
  • Rebase işlemi uygulayarak feature_branch’ini main branch’ine birleştirelim.
1
git rebase main
1
2
3
A - B - E - F - G - H - I    
     \     /                feature_branch
      C - D                  

rebase

Reset

  • reset komutu, commit geçmişindeki bir değişikliği geri almak için kullanılır.
1
A - B - C - D    main
1
A - B - C    main

Hard Reset

  • hard reset, commit geçmişindeki bir değişikliği geri alır ve çalışma dizinindeki dosyaları da değiştirir.
1
git reset --hard COMMIT_HASH

Soft Reset

  • soft reset, commit geçmişindeki bir değişikliği geri alır fakat çalışma dizinindeki dosyaları değiştirmez.
1
git reset --soft COMMIT_HASH
  • Örnek bir senaryo oluşturalım.
1
nano deneme.txt
1
2
git add deneme.txt
git commit -m "J: Add deneme.txt"
1
git log --oneline
1
git reset --soft {COMMIT_HASH}

Remote

  • remote komutu, uzak depoları yönetmek için kullanılır. Git, bir projeyi birden fazla kişiyle paylaşmak için kullanılır. Bu nedenle, projenin uzak bir depoda barındırılması gerekebilir. Örnek olarak yeni bir repo oluşturup, bu repoyu uzak bir depo olarak ekleyelim.
1
2
3
mkdir git-rehberi-remote
cd git-rehberi-remote
git init
1
git remote add origin {REMOTE_REPO_URL}

Fetch

  • fetch komutu, uzak depodaki değişiklikleri yerel depoya indirmek için kullanılır. Yalnızca değişiklikleri indirir, yerel dosyaları değiştirmez.
1
git fetch origin main
1
git log --oneline
1
git log --oneline origin/main

Remote Merge

  • merge komutu, uzak depodaki değişiklikleri yerel depoya birleştirmek için de kullanılır.
1
git merge origin/main
  • Fetch ve merge işlemlerini aynı anda yapmak için pull komutunu kullanabiliriz.

Pull

  • pull komutu, uzak depodaki değişiklikleri yerel depoya indirir ve birleştirir.
1
git pull origin main

veya

1
git pull <remote-branch>

Push

  • push komutu, yerel depodaki değişiklikleri uzak depoya göndermek için kullanılır.
1
git push origin main

veya

1
git push <local-branch>:<remote-branch>

GitHub Repositories

  • GitHub, Git depoları (projeleri) için çevrimiçi en popüler web sitesidir. Yani, merkezi bir web sitesinde “remotes” barındırmak içindir. GitHub birkaç amaca hizmet eder:

    1
    2
    3
    4
    
      - Git depolarınızı depolamak
      - Git depolarınızı başkalarıyla paylaşmak
      - Başkalarının depolarını kopyalamak ve üzerinde çalışmak
      - Başkalarının depolarına katkıda bulunmak
    

Git != GitHub

  • Git ve GitHub, birbirinden farklı şeylerdir. Git, bir versiyon kontrol sistemidir. GitHub ise Git depolarınızı depolamak ve paylaşmak için bir web sitesidir.

Pull Request ve Merge

  • Pull request, bir projeye katkıda bulunmak için kullanılır. Bir pull request oluşturduğunuzda, projenin sahibi değişikliklerinizi inceleyebilir ve projeye eklemek için onaylayabilir.

Gitignore

  • .gitignore dosyası, Git’in belirli dosyaları ve klasörleri yoksaymasını sağlar. Bu dosyalar ve klasörler, Git tarafından izlenmez ve depolanmaz.
1
nano .gitignore
1
2
3
4
5
# Ignore .DS_Store files
.DS_Store
images/
*.log
deneme*
This post is licensed under CC BY 4.0 by the author.

Trending Tags