Open Source

Global Gitconfig Dosyası Kurulum ve Kısayollar

Okuma Süresi : 4 dk

Git, Linux çekirdeğinin yaratıcısı Linus Torvalds tarafından tasarlanan ve geliştirilen sürüm kontrol sistemidir (Version Control System). Git, geliştiricilerin kodlarının durumunu takip etmelerine yardımcı olur ve bir kod tabanı üzerinde işbirlikleri yapmalarına olanak tanır. Git sayesinde yapacağınız projelerin adım adım versiyonlarının kopyalarını alarak daha sonra ihtiyaç duyduğunuzda aldığınız kopyalara yani versiyonlara kolayca dönebilirsiniz.

Bu yazıda GIT’i daha üretken hale getirebilmek ve gereksiz görevlerden kaçınmak için global git yapılandırma dosya kurulumuna kısaca değinip, alias olarak ifade edilen kısayolları .gitconfig’te nasıl çalıştıracağımıza bakacağız. Global .gitconfig dosyasının devreye girdiği yer burasıdır.

Git, yükleme sırasında global .gitconfig dosyasını otomatik olarak oluşturmaz. Bu dosya, ilk kez yazılana kadar oluşturulmaz. Hiç bir sistem değişkeni ayarlamadıysanız, dosya sisteminizde olmayacaktır.

Global gitconfig Dosyasını Oluşturma

Global .gitconfig dosyanızı oluşturmanın birkaç yolu vardır.

  • Bir terminal açın git config –global -e komutunu çalıştırı. Daha sonra dosyayı özel yapılandırmalarınızla güncelleyebilirsiniz.
  • git config –global –list komutunu çalıştırmak. Global gitconfig dosyasının yalnızca henüz mevcut olmadığında nerede olması gerektiğini gösterir. Gösterilen yerde .gitconfig adıyla bir metin dosyası oluşturun ve onu özel yapılandırmanızla kaydedin.
  • Eğer dosya zaten varsa, önceki adım size genel .gitconfig dosyasının içeriğini gösterecektir.

Genel eğilim Git kurulu bir sistemde bu config dosyasına kimlik bilgilerinin girilmesiyle oluşturulur. Git’i kurduğunuzda yapmanız gereken ilk şey, kullanıcı adınızı ve e-posta adresinizi ayarlamaktır.


$ git config --global user.name "John Doe"
$ git config --global user.email [email protected]

Peki şu an bu yazıyı okuyorsanız ve basitçe .gitconfig dosyasının nerede olduğunu merak ediyorsanız aşağıdaki komutla hem global config dosyasını hem de içinde bulunduğunuz klasörde git ile ilişkili bir repo config dosyası varsa nereye baktığını görebilirsiniz. Örn bu sitenin dizininden bakarsak ;

git config --list --show-origin

file:/home/eorus/.gitconfig     [email protected]
file:/home/eorus/.gitconfig     user.name=Alper Orus
file:.git/config                [email protected]:eorus/alperorus.git
file:.git/config                remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
.....

Ortak genel gitconfig yapılandırmaları arasında User Details, Alias, Color, Credential helpers:, Core, Diff ana başlıkları bulunmaktadır. Biz git komutlarını kısaltmak ve daha üretken olmanıza yardımcı olmak için kullanılan takma ad (alias) kısmına bakacağız.

Git Alias

Alias (takma ad) kullanmak, Git deneyiminizi daha basit ve daha kolay bir hale getirir. Git komutlarının her birinin tüm metnini yazmak istemiyorsanız, gitconfig dosyasını kullanarak her komut için kolayca bir takma ad ayarlayabilirsiniz. Gitconfig dosyası içerisinde aşağıdaki şekilde bir alias bölümü belirlediğimizde :


[alias]
    st = status
    ci = commit -s
    br = branch
    co = checkout
    vis = !gitk --all &

Bu kısayolları git komutu ile şu şekilde kullanabileceğimizi belirtmiş oluruz.


$ git st # Runs "git status"
$ git ci # Runs "git commit -s"
$ git vis # runs "gitk --all &"

Ya da terminalde git config –global alias.co checkout> komutunu vererek, global gitconfig dosyanıza etkin bir şekilde git checkout için bir takma ad ekleyebilirsiniz. Bundan böyle, bir branch’ı kontrol etmek için (git checkout yerine) basitçe git co yazabilirsiniz. Global gitconfig dosyasını doğrudan güncelleyerek birkaç takma ad ekleyebilirsiniz. Benim kullandığım bazı ortak git takma adlarının bir listesini aşağıda bulabilirsiniz :


[alias]
# status short & branch
  s = status -s -b
# add, commit
  ac = !git add -A && git commit -m
# add, commit, push
	acp = "!f() { git add -A && git commit -m \"$@\" && git push; }; f"
# get all new content
	get = !git pull --rebase && git submodule update --init --recursive
# what changed (detailed log)
	w = whatchanged
# log
	l = log
# log simpler
	lol = "log --graph --decorate --oneline"
# log simple
	logd = "log --date-order --all --graph --format='%C(green)%h%Creset %C(yellow)%an%Creset %C(blue bold)%ar%Creset %C(red bold)%d%Creset%s'"
# log fancy
	logf = "log --date-order --all --graph --name-status --format='%C(green)%H%Creset %C(yellow)%an%Creset %C(blue bold)%ar%Creset %C(red bold)%d%Creset%s'"
# what have i changed since yesterday
  logg = !git log --since yesterday --pretty=short --author `git config user.email`
# Git last commit
  last = "log -1 HEAD --stat"
# Git search commit
  se = "!git rev-list --all | xargs git grep -F"

Tahmin edeceğiniz üzere git acp “commit message” ile basit bir git akışını tek komutla halledebiliyorsunuz.

*Nix Kullanıcıları için Bonus

Gitconfig dışında bashrc dosyanıza alias atayarak bu kısayolları daha da kısa ve git’ten bağımsız hale getirebilirsiniz.


alias g=’git’
alias gb=’git branch’
alias gba=’git branch -a’
alias gc=’git commit -v’
alias gca=’git commit -v -a’
alias gd=’git diff | mate’
alias gl=’git pull’
alias gp=’git push’

Kaynaklar :