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’indeclassic.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 vecontents.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’inimain
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’inerebase
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
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.