Skip to content

Instantly share code, notes, and snippets.

@erdemoflaz
Last active October 31, 2023 17:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save erdemoflaz/775a40b05591ac8b73287e574f342864 to your computer and use it in GitHub Desktop.
Save erdemoflaz/775a40b05591ac8b73287e574f342864 to your computer and use it in GitHub Desktop.
Git kullanımı | TR
# -------------------------------------------
# GIT NOTLARI - ERDEM OFLAZ |8 ARALIK 2017|
# -------------------------------------------
# Paketlerin yüklenmesi
aptitude install git
# kullanıcı bilgileri
git config --global user.name "emrah"
git config --global user.email "emrah@mail.com"
git config --list
cat ~/.gitconfig
# ~/.gitconfig
[user]
name = emrah
email = emrah@mail.com
[push]
default = simple
[color]
branch = auto
diff = auto
status = auto
# Ana depo oluşturmak
mkdir repositories
cd repositories
mkdir repo1.git
cd repo1.git
git init --bare
# Yerel depoyu, ana depodan klonlayarak oluşturmak
- Aynı makinedelerse
mkdir repositories
cd repositories
git clone --no-hardlinks ~/repositories/repo1.git
- SSH ile bağlanılacaksa
mkdir repositories
cd repositories
git clone ssh://kullanici@sunucu.adresi:22/~/repositories/repo1.git
# Yerel depo oluşturmak (ana depo kullanılmayacak)
mkdir repositories
cd repositories
mkdir repo1.git
cd repo1.git
git init
# Yerel depoda yapılabilecek ilk işlemler (depo henüz boş)
cd repositories/repo1.git
vim .gitignore
(sürüm kontrolü yapılmayacak dosyalar/klasörler yazılır)
(Dosyalar ve klasörler oluşturulur)
git add -A
git commit -m "depo ilk hal"
# Ana depo varsa, ana depo güncellenir
git push origin master
# git add (calisma alanindaki degisiklikleri indekse ekleme)
git add file(s) # belirtilen dosyalari eklemek
git add . # degisen ve yeni eklenen dosyalari eklemek
git add -u # degisen ve silinen dosyalari eklemek
git add -A # degisen, yeni eklenen ve silinen dosyalari eklemek
# git commit (indeks durumunu, yerel depoya kaydetmek)
git commit -m "aciklama notu"
# git push (yerel depodaki değişiklikleri, ana depoya aktarmak)
git push
# git pull (ana deponun son halini, çalışma alanına almak)
git pull
# git diff (farkları görmek)
- calisma alani ve indeks arasindaki farklar
git diff
- calisma alani ve yerel depo arasindaki farklar
git diff HEAD
- merge'den etkilenen dosyaların listesi
git diff --name-status
# git status (calisma alaninin indeks ve yerel depoya gore durumu)
git status
# git log (commit loglarini gosterme)
git log
# Çalışma alanında yapılan değişikliği geri almak
- henüz add yapılmamışsa...
git checkout file(s) # indeksteki kopyaya donme
git checkout . # indeksteki kopyaya donme
- add yapılmışsa, dolayısı ile indeksteki kopya da değişmiş...
git checkout HEAD file(s) # yerel depodaki kopyaya donme
git checkout HEAD . # yerel depodaki kopyaya donme
# git reset (yapılan commit'i iptal etmek)
git reset --hard HEAD~1 # 1 commit geri dönülür.
# indeks eski haline gelir.
# calisma alani eski haline gelir.
git reset HEAD~1 # 1 commit geri dönülür.
# indeks eski haline gelir.
# calisma alanindaki degisiklikler korunur.
git reset --soft HEAD~1 # 1 commit geri dönülür.
# indeksteki degisiklikler korunur.
# calisma alanindaki degisiklikler korunur.
# git revert (yapılan commit'i iptal eden patch ekleme)
git revert <commit_id>
# eski surumlere ulaşmak
git log file1
git show 0323e5918144ec29a069c7ab23cac40ed921d31d:file1
git show HEAD:file1
git show HEAD~2:file1
git tag v0.1 0323e5918144ec29a069c7ab23cac40ed921d31d
git show v0.1:file1
git show v0.1:file2
vim file1
git reset file1
rm file1
git checkout -f file1
# Güncelleme çakışmalarını çözmek.
- push aşamasında aynı anda güncellenmiş dosyaların listesi yer alır.
- Dosya içinde eklenen ve çıkan satırlar işaretlidir. Bu kısımlar
düzeltilir.
- Düzeltilmiş değişklikler commit edilir.
git add .
git commit -m "merged"
git push
# branch ile çalışma
- branch oluşturma
git branch test
- branch listesi
git branch
- branch değiştirme
git checkout test
git checkout master
- branch merge
git checkout test
git commit -a
git checkout master
git commit -a
git merge test
- branch silme
git branch -d test
# depoyu klonlamak (klasör henuz yok, emc2-dev adıyla oluşacak)
git clone git://git.linuxcnc.org/git/emc2.git emc2-dev
# henüz yayınlanmaya hazır değişikliklerimiz varken depodan güncelleme
git stash save
git pull
git stash apply
# Birden fazla remote depo ile çalışmak
- remote listesi
git remote -v
- remote ekleme
git remote add github git@github.com:emrahcom/www_emrah_com.git
- remote silme
git remote rm github
- remote push
git push origin master
git push github master
# -----------------------------------------------------------------------------
# GITOLITE SUNUCU
# -----------------------------------------------------------------------------
# Paketlerin kurulumu
aptitude install gitolite
dpkg-reconfigure gitolite
# Gitolite home klasörünü değiştirme
normalde /var/lib/gitolite kullanılıyor. Gerekmiyorsa değiştirme.
mkdir /home/gitolite
chown gitolite: /home/gitolite
vim /etc/passwd
gitolite home klasörü -> /home/gitolite
# Gitolite kullanıcısı için ssh erişim izni.
vim /etc/ssh/sshd_config
AllowUsers emrah gitolite
# Gitolite admin kullanıcısının public anahtarı
cp emrah.pub /tmp/
chmod a+r /tmp/emrah.pub
su -l gitolite
gl-setup /tmp/emrah.pub
# -----------------------------------------------------------------------------
# GITOLIE CLIENT (ADMIN)
# -----------------------------------------------------------------------------
Bu işlemler, admin kullanıcısının makinesinde yapılır.
# Anahtarı yükleme
ssh-add .ssh/emrah
# Gitolite admin deposunu klonlama (SSH 22. port ile)
git clone ssh://gitolite@10.10.10.10:22/gitolite-admin
cd gitolite-admin
git pull
# Kullanıcı ve depo ekleme
Kullanıcının public anahtari alınır ve kullanıcının adı ile kaydedilir.
depo1 adlı depoda kullanici1'in yazma/okuma, kullanici2'nin sadece okuma hakkı
olacaksa:
cp kullanici1.pub gitolite-admin/keydir/
cp kullanici2.pub gitolite-admin/keydir/
vim gitolite-admin/conf/gitolite.conf
repo depo1
RW+ = kullanici1
R = kullanici2
git status
git add -A
git commit -m 'depo1, kullanici1 ve kullanici2 eklendi'
git push
# -----------------------------------------------------------------------------
# GITOLIE CLIENT (USER)
# -----------------------------------------------------------------------------
Bu işlemler, Gitolite depolarını kullanacak kullanıcıların makinelerinde
yapılır.
# Anahtarı yükleme
ssh-add .ssh/kullanici1
# Depo boşken ilk kullanıldığında
git clone ssh://gitolite@10.10.10.10:22/depo1
cd depo1
touch OKUBENI
git add -A
git commit -m "depo1 olusturuldu"
git push origin master
# Depoyu klonlama
git clone ssh://gitolite@10.10.10.10:22/depo1
cd depo1
git pull
# Depodan son değişiklikleri alma
git pull
# Yapılan değişikliklerin depoya yüklenmesi
git status # degisen dosyalar
git diff # farkliliklari gormek icin
git add -A # commit listesine ekleme
git commit -m 'aciklama' # yerel depoyu guncelleme
git push # ana depoyu guncelleme
# Yapılan değişiklikleri yerel depomuzda saklayıp ana depodaki son hale dönme
git stash save
git stash list
git stash drop stash@{0} # Sakladığımız değişikliği silme
git stash clear # Sakladığımız bütün değişiklikleri silme
git stash apply stash@{0} # Sakladığımız değişikliği tekrardan uygulama
git stash pop # Sakladığımız son değişikliği uygulama
# -----------------------------------------------------------------------------
# GITWEB
# -----------------------------------------------------------------------------
Sadece parolayı bilen kullanıcılar gitweb arayüzünü kullanabilecek.
# Paketlerin kurulumu
aptitude install gitweb
# Ayarlar
- /etc/gitweb.conf
#$projectroot = "/var/cache/git";
$projectroot = "/home/gitolite/repositories";
- www-data kullanıcısı gitolite grubuna
adduser www-data gitolite
- Group için gitolite depolarını okuma hakkı
/home/gitolite/.gitolite.rc
$REPO_UMASK = 0027;
- Gitweb için .htaccess düzenleme izni
/etc/apache2/conf.d/gitweb
AllowOverride AuthConfig Options
- .htaccess dosyasının oluşturulması
/usr/share/gitweb/.htaccess
AuthUserFile /home/gitolite/htaccess/htpasswd
AuthType Basic
AuthName "..."
Require valid-user
- htpasswd dosyasının oluşturulması
su -l gitolite
mkdir /home/gitolite/htaccess
cd /home/gitolite/htaccess
htpasswd -sc htpasswd kullanici1 # ilk kullanici icin
htpasswd -s htpasswd kullanici2
chmod 750 /home/gitolite/htaccess
chmod 640 /home/gitolite/htaccess/htpasswd
# -----------------------------------------------------------------------------
# KAYNAKLAR
# -----------------------------------------------------------------------------
http://www.kernel.org/pub/software/scm/git/docs/user-manual.html
https://we.riseup.net/debian/git-development-howto
http://sitaramc.github.com/gitolite/doc/1-INSTALL.html (gitolite kurulum)
http://sitaramc.github.com/gitolite/doc/2-admin.html (gitolite yönetim)
http://marklodato.github.com/visual-git-guide/index-en.html
http://gitready.com/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment