pythontr.com
Versiyon yönetim sistemi olarak Git notlarım "kullanım dökümanı"
aptitude install git-core gitk git-gui
# ~/.gitconfig [user] name = pythontr email = pythontr@mail.com
git config --global user.name "husonet" git config --global user.email "husonet@mail.com" git config --list cat ~/.gitconfig
git rm -f Gemfile rm 'Gemfile'
Son haline bakalım
git status On branch develop Changes to be committed: (use "git reset HEAD <file>..." to unstage) deleted: Gemfile 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: .gitignore modified: Gemfile.lock modified: Guardfile modified: config/application.rb modified: config/environment.rb modified: config/environments/development.rb modified: config/initializers/recaptcha.rb
git init vim .gitignore git add file(s) git add . # yeni oluşturulan ve bütün değişen dosyalari guncellenecekler listesine ekle git add -u # değişiklik olmuş veya silinmiş dosyaları güncellenecekler listesine ekle git commit -m 'not' # güncelle git diff # son güncelleme ve mevcut durum arasındaki farklar git status # değişen dosyalar git log # güncelleme geçmişi
mkdir kaynak cd kaynak touch dosya1 touch dosya2 touch dosya3 git init echo dosya3 > .gitignore git status git add . git status git commit -m 'ilk commit notumuz' git status git log echo 'xxx' >> dosya1 git diff HEAD #(veya sadece git diff) git add dosya1 git commit -m 'ikinci commit notumuz' # Bu kısımda Türkçe karakter kullanmamakta fayda olacağını düşünüyorum git log
"bare ile oluşturulan depoda doğrudan değişiklik yapılamaz." cd mkdir depo cd depo git --bare init "depoyu klonlamak" cd mkdir yerel cd yerel git clone ~/depo proje1 # aynı dosya sisteminde git ssh://adres:port/~/depo proje1 # ssh ile "son değişiklikleri ana depodan almak" cd ~/yerel/proje1 git pull "değişiklik yapıp ana depoya yükleme" cd ~/yerel/proje1 #(değişiklikleri yap) git add . git commit -m 'degisiklik yapildi' git pull # sorun yoksa git push origin master
git clone ssh://gitolite@192.168.1.51:22/pythontr.com cd pythontr.com git add . git commit -m "pythontr.com ilk depo" git push origin master
git log dosya1 git show 0323e5918144ec29a069c7ab23cac40ed921d31d:file1 git tag v0.1 0323e5918144ec29a069c7ab23cac40ed921d31d git show v0.1:file1 git show v0.1:file2 vim dosya1 git reset dosya1 rm dosya1 git checkout -f dosya1
# branch oluşturma git branch test # branc 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
git clone git://git.linuxcnc.org/git/emc2.git emc2-dev
git pull --rebase
# (yaptıklarımız yerel depoya commit edilecek) git pull --rebase # (çakışma varsa düzeltilecek) git push
git stash save git pull --rebase git stash apply
Branch Oluşturma
git branch PD-5
Branch değiştirme
git checkout develop
Projeyi Alma
git pull
Sadece değişenleri gönder
git commit -a -m "SQL Injection Modify"
Değişiklikleri gönderme
git push --set-upstream origin PD-9
Bazen ortak çalışmalarımızda örneğin konfigürasyon dosyalarımız, yada db şifrelerinin bulunduğu gibi dosyalarımızı git e göndermek istemeyebiliriz bu tip durumlarda dosyanın takibini bırakmamız gerekir aşağıdaki komutla bu işi yapabiliriz.
git update-index --assume-unchanged Gemfile
# Kurulum aptitude install gitolite # Gitolite home klasörünü değiştirmek (normalde /var/lib/gitolite) 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 husonet gitolite # Gitolite admin kullanıcısı ve admin deposu cp husonet.pub /tmp/ chmod a+r /tmp/husonet.pub su -l gitolite gl-setup /tmp/husonet.pub
# Anahtarı yükleme ssh-add .ssh/husonet # 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 anahtarı 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 . git commit -m 'depo1, kullanici1 ve kullanici2 eklendi' git push
# 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 . 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 . # commit listesine ekleme git commit -m 'aciklama' # yerel depoyu guncelleme git push # ana depoyu guncelleme
aptitude install gitweb
vim /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
chmod -R g+rx /home/gitolite/repositories
git fetch --tags
git tag|grep 1337
git tag -a test-PYTHON-4779 -m "Remove is xxx"
git tag --delete 1336rc1 1337rc1
git push origin test-PYTHON-4779
git push --delete origin 1336 1337rc1
Yorumlar