Git; hem üst düzey işlemler hem de iç yapılara tam erişim sağlayan, olağanüstü derecede zengin bir komut kümesine sahip; hızlı, ölçeklenebilir, dağıtık bir revizyon kontrol sistemidir.
Başlamak için gittutorial(7) kılavuzuna bakın, ardından kullanışlı bir minimum komut kümesi için giteveryday(7) kılavuzuna göz atın. Git User’s Manual[1] (Git Kullanıcı Kılavuzu) daha derinlemesine bir giriş içerir.
Temel kavramlarda uzmanlaştıktan sonra, Git'in hangi komutları sunduğunu öğrenmek için bu sayfaya geri dönebilirsiniz. Münferit Git komutları hakkında daha fazla bilgiyi "git help komut" ile öğrenebilirsiniz. gitcli(7) kılavuz sayfası, komut satırı komut sözdizimine genel bir bakış sunar.
-v, --version
git programının ait olduğu Git paketinin sürümünü yazdırır.
Bu seçenek dahili olarak git version ... komutuna dönüştürülür ve git-version(1) komutuyla aynı seçenekleri kabul eder. Eğer --help seçeneği de verilmişse, --version seçeneğine göre öncelik kazanır.
-h, --help
Sözdizimini ve en sık kullanılan komutların bir listesini yazdırır. Eğer --all veya -a seçeneği verilirse, kullanılabilir tüm komutlar yazdırılır. Bir Git komutu adı belirtilirse, bu seçenek o komutun kılavuz sayfasını açar.
Kılavuz sayfasının nasıl görüntüleneceğini kontrol etmek için başka seçenekler de mevcuttur. Daha fazla bilgi için git-help(1) kılavuzuna bakın, çünkü git --help ... ifadesi dahili olarak git help ... komutuna dönüştürülür.
-C
Git, mevcut çalışma dizini yerine belirtilen <yol> içinde başlatılmış gibi çalışır. Birden fazla -C seçeneği verildiğinde, sonraki her mutlak olmayan -C <yol> seçeneği, bir önceki -C <yol> seçeneğine göre göreceli olarak yorumlanır. Eğer <yol> mevcut ancak boşsa, örneğin -C "" şeklinde ise, mevcut çalışma dizini değiştirilmeden bırakılır.
Bu seçenek, --git-dir ve --work-tree gibi yol adı bekleyen seçenekleri etkiler; zira bu yolların yorumlanması, -C seçeneğinin neden olduğu çalışma dizinine göre yapılır. Örneğin, aşağıdaki çağrılar birbirine eşdeğerdir:
git --git-dir=a.git --work-tree=b -C c status
git --git-dir=c/a.git --work-tree=c/b status
-c =<değer>
Komuta bir yapılandırma parametresi geçirir. Verilen değer, yapılandırma dosyalarındaki değerleri geçersiz kılar. <ad> parametresinin, git config tarafından listelenen biçimle aynı olması beklenir (noktalarla ayrılmış alt anahtarlar).
git -c foo.bar ... komutunda = işaretinin atlanmasına izin verildiğini ve bunun foo.bar değişkenini boolean true değerine ayarladığını unutmayın (tıpkı bir yapılandırma dosyasındaki [foo]bar ifadesinin yapacağı gibi). Eşittir işaretinin dahil edilmesi ancak değerin boş bırakılması (örneğin git -c foo.bar= ...), foo.bar değişkenini boş bir dizeye ayarlar ve git config --type=bool bunu false olarak dönüştürür.
--config-env==<ortam_değişkeni>
-c <ad>=<değer> seçeneği gibi, <ad> yapılandırma değişkenine bir değer verir; burada <ortam_değişkeni>, değerin alınacağı ortam değişkeninin adıdır. -c seçeneğinin aksine, değeri doğrudan boş bir dizeye ayarlamak için bir kısayol yoktur; bunun yerine ortam değişkeninin kendisi boş dizeye ayarlanmalıdır. <ortam_değişkeni> ortamda mevcut değilse bu bir hatadır. Çelişkiyi önlemek için, <ortam_değişkeni>, içinde eşittir işareti içeren bir <ad> ile karışmaması adına eşittir işareti içeremez.
Bu seçenek, Git'e geçici yapılandırma seçenekleri iletmek istediğiniz ancak bunu diğer işlemlerin komut satırınızı okuyabileceği (örneğin /proc/self/cmdline), ancak ortamınızı okuyamayacağı (örneğin /proc/self/environ) işletim sistemlerinde yaptığınız durumlar için kullanışlıdır. Bu davranış Linux işletim sisteminde varsayılan olsa da sizin sisteminizde böyle olmayabilir.
Bunun, hassas bilgilerin değerin bir parçası olduğu http.extraHeader gibi değişkenler için güvenlik sağlayabileceğini, ancak hassas bilgilerin anahtarın bir parçası olabileceği url.<base>.insteadOf gibi değişkenler için güvenlik sağlamayacağını unutmayın.
--exec-path[=]
Çekirdek Git programlarınızın kurulu olduğu yol. Bu durum, GIT_EXEC_PATH ortam değişkeni ayarlanarak da kontrol edilebilir. Hiçbir yol belirtilmezse, Git mevcut ayarı yazdırır ve ardından çıkar.
--html-path
Git'in HTML belgelerinin kurulu olduğu yolu, sonunda eğik çizgi olmadan yazdırır ve çıkar.
--man-path
Git'in bu sürümünün kılavuz sayfaları için manpath'i (bkz. man(1)) yazdırır ve çıkar.
--info-path
Git'in bu sürümünü belgeleyen Info dosyalarının kurulu olduğu yolu yazdırır ve çıkar.
-p, --paginate
Eğer standart çıktı bir terminal ise tüm çıktıyı less (veya ayarlanmışsa $PAGER) programına yönlendirir. Bu seçenek, pager.<cmd> yapılandırma seçeneklerini geçersiz kılar (aşağıdaki "Yapılandırma Mekanizması" bölümüne bakın).
-P, --no-pager
Git çıktısını bir sayfalayıcıya (pager) yönlendirmez.
--git-dir=
Deponun (.git dizininin) yolunu ayarlar. Bu durum, GIT_DIR ortam değişkeni ayarlanarak da kontrol edilebilir. Mevcut çalışma dizine mutlak veya göreceli bir yol olabilir.
Bu seçeneği (veya GIT_DIR ortam değişkenini) kullanarak .git dizininin konumunu belirtmek, .git alt dizinine sahip bir dizin bulmaya çalışan depo keşfini (depo ve çalışma ağacının en üst düzeyinin bu şekilde keşfedilmesini) kapatır ve Git'e çalışma ağacının en üst düzeyinde olduğunuzu bildirir. Çalışma ağacının en üst düzey dizininde değilseniz, çalışma ağacının en üst düzeyinin nerede olduğunu Git'e --work-tree=<yol> seçeneğiyle (veya GIT_WORK_TREE ortam değişkeniyle) bildirmelisiniz.
Git'i yalnızca <yol> içinde başlatılmış gibi çalıştırmak istiyorsanız git -C <yol> komutunu kullanın.
--work-tree=
Çalışma ağacının (working tree) yolunu ayarlar. Mevcut çalışma dizinine mutlak bir yol veya göreceli bir yol olabilir. Bu durum, GIT_WORK_TREE ortam değişkeni ve core.worktree yapılandırma değişkeni ayarlanarak da kontrol edilebilir (daha ayrıntılı bir tartışma için git-config(1) kılavuzundaki core.worktree bölümüne bakın).
--namespace=
Git ad alanını (namespace) ayarlar. Daha fazla bilgi için gitnamespaces(7) kılavuzuna bakın. GIT_NAMESPACE ortam değişkenini ayarlamaya eşdeğerdir.
--bare
Depoyu yalın (bare) bir depo olarak ele alır. Eğer GIT_DIR ortam değişkeni ayarlanmamışsa, mevcut çalışma dizinine ayarlanır.
--no-replace-objects
Git nesnelerini değiştirmek için değiştirme referanslarını (replacement refs) kullanmaz. Bu durum, GIT_NO_REPLACE_OBJECTS ortam değişkenini herhangi bir değerle dışa aktarmaya eşdeğerdir. Daha fazla bilgi için git-replace(1) kılavuzuna bakın.
--no-lazy-fetch
Eksik nesneleri promisor uzak sunucusundan (promisor remote) isteğe bağlı olarak otomatik çekmez (fetch). Nesnenin yerel olarak mevcut olup olmadığını görmek için git cat-file -e <object> ile birlikte kullanışlıdır. Bu durum, GIT_NO_LAZY_FETCH ortam değişkenini 1 olarak ayarlamaya eşdeğerdir.
--no-optional-locks
Kilit (lock) gerektiren isteğe bağlı işlemleri gerçekleştirmez. Bu durum, GIT_OPTIONAL_LOCKS ortam değişkenini 0 olarak ayarlamaya eşdeğerdir.
--no-advice
Tüm tavsiye ipuçlarının (advice hints) yazdırılmasını devre dışı bırakır.
--literal-pathspecs
Yol belirteçlerini (pathspecs) harfi harfine ele alır (yani dosya kalıbı eşleştirme (globbing) ve yol belirteci sihri yoktur). Bu durum, GIT_LITERAL_PATHSPECS ortam değişkenini 1 olarak ayarlamaya eşdeğerdir.
--glob-pathspecs
Tüm yol belirteçlerine "glob" sihri ekler. Bu durum, GIT_GLOB_PATHSPECS ortam değişkenini 1 olarak ayarlamaya eşdeğerdir. Münferit yol belirteçlerinde globbing'i devre dışı bırakmak, :(literal) yol belirteci sihri kullanılarak yapılabilir.
--noglob-pathspecs
Tüm yol belirteçlerine "literal" (harfi harfine) sihri ekler. Bu durum, GIT_NOGLOB_PATHSPECS ortam değişkenini 1 olarak ayarlamaya eşdeğerdir. Münferit yol belirteçlerinde globbing'i etkinleştirmek, :(glob) yol belirteci sihri kullanılarak yapılabilir.
--icase-pathspecs
Tüm yol belirteçlerine "icase" (büyük/küçük harf duyarsızlığı) sihri ekler. Bu durum, GIT_ICASE_PATHSPECS ortam değişkenini 1 olarak ayarlamaya eşdeğerdir.
--list-cmds=[,...]
Komutları gruba göre listeler. Bu dahili/deneysel bir seçenektir ve gelecekte değişebilir veya kaldırılabilir. Desteklenen gruplar şunlardır: builtins (dahili bileşenler), parseopt (parse-options kullanan dahili komutlar), main (libexec dizinindeki tüm komutlar), others ($PATH içindeki git- önekine sahip diğer tüm komutlar), list-<category> (command-list.txt içindeki kategorilere bakın), nohelpers (yardımcı komutları hariç tutar), alias ve config (komut listesini completion.commands yapılandırma değişkeninden alır).
--attr-source=gitattributes dosyasını çalışma ağacı yerine <tree-ish> nesnesinden okur. Bkz. gitattributes(5). Bu durum, GIT_ATTR_SOURCE ortam değişkenini ayarlamaya eşdeğerdir.
Git Komutları
Git'i üst düzey ("porcelain" - porselen) komutlar ve alt düzey ("plumbing" - tesisat) komutlar olarak ikiye ayırıyoruz.
ÜST DÜZEY KOMUTLAR (PORCELAIN)
Porselen komutlarını ana komutlar ve bazı yardımcı kullanıcı araçları olarak ayırıyoruz.
Ana porselen komutları
git-add(1)
Dosya içeriklerini dizine (index) ekler.
git-am(1)
Bir posta kutusundan (mailbox) gelen bir dizi yamayı (patch) uygular.
git-archive(1)
Belirtilen bir ağaçtan (tree) dosyaların bir arşivini oluşturur.
git-backfill(1)
Kısmi bir klondaki (partial clone) eksik nesneleri indirir.
git-bisect(1)
Bir hataya (bug) neden olan işlemeyi (commit) bulmak için ikili arama (binary search) kullanır.
git-branch(1)
Dalları (branch) listeler, oluşturur veya siler.
git-bundle(1)
Nesneleri ve referansları arşiv yoluyla taşır.
git-checkout(1)
Dalları değiştirir veya çalışma ağacı dosyalarını geri yükler.
git-cherry-pick(1)
Mevcut bazı işlemelerin getirdiği değişiklikleri uygular.
git-blame(1)
Bir dosyanın her satırını en son hangi revizyonun ve yazarın değiştirdiğini gösterir.
git-bugreport(1)
Kullanıcının bir hata raporu göndermesi için bilgi toplar.
git-count-objects(1)
Paketlenmemiş nesne sayısını ve bunların disk tüketimini sayar.
git-diagnose(1)
Tanılama bilgilerinden oluşan bir zip arşivi oluşturur.
git-difftool(1)
Yaygın diff araçlarını kullanarak değişiklikleri gösterir.
git-fsck(1)
Veritabanındaki nesnelerin bağlanabilirliğini ve geçerliliğini doğrular.
git-help(1)
Git hakkında yardım bilgilerini görüntüler.
git-instaweb(1)
Çalışan deponuza gitweb üzerinde anında göz atmanızı sağlar.
git-merge-tree(1)
Dizine (index) veya çalışma ağacına dokunmadan birleştirme gerçekleştirir.
git-rerere(1)
Çelişkili birleştirmelerin kaydedilmiş çözümlerini yeniden kullanır.
git-show-branch(1)
Dalları ve onların işlemelerini gösterir.
git-verify-commit(1)
İşlemelerin GPG imzasını kontrol eder.
git-verify-tag(1)
Etiketlerin GPG imzasını kontrol eder.
git-version(1)
Git hakkında sürüm bilgilerini görüntüler.
git-whatchanged(1)
Her işlemenin getirdiği farklarla birlikte günlükleri gösterir.
gitweb(1)
Git web arayüzü (Git depoları için web ön ucu).
Başkalarıyla Etkileşim Kurma
Bu komutlar, yabancı kaynak kodu yönetim sistemleriyle (SCM) ve e-posta üzerinden yamalar aracılığıyla diğer insanlarla etkileşim kurmak içindir.
git-archimport(1)
Bir GNU Arch deposunu Git'e aktarır (import).
git-cvsexportcommit(1)
Tek bir işlemeyi (commit) bir CVS çalışma kopyasına (checkout) aktarır.
git-cvsimport(1)
İnsanların nefret etmeyi sevdiği başka bir SCM'den verilerinizi kurtarır.
git-cvsserver(1)
Git için bir CVS sunucu emülatörü.
git-imap-send(1)
stdin'den gelen bir yama koleksiyonunu bir IMAP klasörüne gönderir.
git-p4(1)
Perforce depolarından veri aktarır ve bunlara gönderim yapar.
git-quiltimport(1)
Mevcut dal üzerine bir quilt yama kümesi uygular.
git-request-pull(1)
Bekleyen değişikliklerin bir özetini üretir.
git-send-email(1)
Bir yama koleksiyonunu e-posta olarak gönderir.
git-svn(1)
Bir Subversion deposu ile Git arasında iki yönlü işlem gerçekleştirir.
Sıfırlama, Geri Yükleme ve Geri Alma (Reset, restore ve revert)
Benzer adlara sahip üç komut vardır: git reset, git restore ve git revert.
• git-revert(1), diğer işlemelerin getirdiği değişiklikleri geri alan yeni bir işleme yapmakla ilgilidir.
• git-restore(1), çalışma ağacındaki dosyaları dizinden (index) veya başka bir işlemeden geri yüklemekle ilgilidir. Bu komut dalınızı güncellemez. Komut ayrıca dizindeki dosyaları başka bir işlemeden geri yüklemek için de kullanılabilir.
• git-reset(1), dalınızı güncellemekle, daldan işlemeler eklemek veya çıkarmak için ucu taşımakla ilgilidir. Bu işlem işleme geçmişini değiştirir.
git reset, git restore ile örtüşecek şekilde dizini geri yüklemek için de kullanılabilir.
Alt Düzey Komutlar (Plumbing)
Git kendi porselen katmanını içermesine rağmen, alt düzey komutları alternatif porselenlerin geliştirilmesini desteklemek için yeterlidir. Bu tür porselenlerin geliştiricileri, işe git-update-index(1) ve git-read-tree(1) kılavuzlarını okuyarak başlayabilirler.
Bu alt düzey komutların arayüzünün (girdi, çıktı, seçenekler kümesi ve semantik) Porselen düzeyindeki komutlara göre çok daha kararlı olması amaçlanmıştır; çünkü bu komutlar öncelikle betik kullanımı (scripted use) içindir. Öte yandan, Porselen komutlarının arayüzü, son kullanıcı deneyimini iyileştirmek amacıyla değişikliğe tabidir.
Aşağıdaki açıklama, alt düzey komutları; nesneleri manipüle eden (depoda, dizinde ve çalışma ağacında), nesneleri sorgulayan ve karşılaştıran ve nesneleri ile referansları depolar arasında taşıyan komutlar olarak ayırır.
Genel olarak sorgulama komutları çalışma ağacındaki dosyalara dokunmaz.
Depoları Eşitleme
git-daemon(1)
Git depoları için son derece basit bir sunucu.
git-fetch-pack(1)
Başka bir depodan eksik nesneleri alır.
git-http-backend(1)
HTTP üzerinden Git'in sunucu tarafı uygulaması.
git-send-pack(1)
Nesneleri Git protokolü üzerinden başka bir depoya gönderir (push).
git-update-server-info(1)
Aptal sunuculara (dumb servers) yardımcı olmak için yardımcı bilgi dosyasını günceller.
Aşağıdakiler yukarıdakiler tarafından kullanılan yardımcı komutlardır; son kullanıcılar bunları genellikle doğrudan kullanmazlar.
git-http-fetch(1)
HTTP üzerinden uzak bir Git deposundan indirme yapar.
git-http-push(1)
HTTP/DAV üzerinden nesneleri başka bir depoya gönderir.
git-receive-pack(1)
Depoya gönderilenleri (push) alır.
git-shell(1)
Yalnızca Git SSH erişimi için kısıtlı oturum açma kabuğu (shell).
git-upload-archive(1)
Arşivi git-archive komutuna geri gönderir.
git-upload-pack(1)
Paketlenmiş nesneleri git-fetch-pack komutuna geri gönderir.
Dahili yardımcı komutlar
Bunlar diğer komutlar tarafından kullanılan dahili yardımcı komutlardır; son kullanıcılar genellikle bunları doğrudan kullanmaz.
git-check-ignore(1)
gitignore / hariç tutma (exclude) dosyalarında hata ayıklaması yapar.
git-check-mailmap(1)
Kişilerin kurallı adlarını ve e-posta adreslerini gösterir.
git-check-ref-format(1)
Bir referans adının düzgün biçimlendirildiğinden emin olur.
git-column(1)
Verileri sütunlar halinde görüntüler.
git-credential(1)
Kullanıcı kimlik bilgilerini alır ve saklar.
git-credential-cache(1)
Parolaları geçici olarak bellekte saklamak için yardımcı araç.
git-credential-store(1)
Kimlik bilgilerini diskte saklamak için yardımcı araç.
git-fmt-merge-msg(1)
Bir birleştirme işlemesi iletisi (merge commit message) üretir.
git-hook(1)
Git kancalarını (hooks) çalıştırır.
git-interpret-trailers(1)
İşleme iletilerindeki yapılandırılmış bilgileri ekler veya ayrıştırır.
git-mailinfo(1)
Tek bir e-posta iletisinden yamayı ve yazarlık bilgilerini çıkarır.
git-mailsplit(1)
Basit UNIX mbox bölücü programı.
git-merge-one-file(1)
git-merge-index ile kullanılacak standart yardımcı program.
git-patch-id(1)
Bir yama için benzersiz kimlik (ID) hesaplar.
git-sh-i18n(1)
Git'in kabuk betikleri için i18n kurulum kodu.
git-sh-setup(1)
Ortak Git kabuk betiği kurulum kodu.
git-stripspace(1)
Gereksiz boşlukları kaldırır.
Kılavuzlar
Aşağıdaki belge sayfaları, Git kavramları hakkındaki kılavuzlardır.
gitcore-tutorial(7)
Geliştiriciler için bir Git çekirdek (core) eğitimi.
gitcredentials(7)
Git'e kullanıcı adları ve parolalar sağlama.
gitcvs-migration(7)
CVS kullanıcıları için Git.
gitdiffcore(7)
Diff çıktısını ince ayarlama.
giteveryday(7)
Everyday Git için kullanışlı bir minimum komut kümesi.
gitfaq(7)
Git kullanımı hakkında sıkça sorulan sorular.
gitglossary(7)
Bir Git Sözlüğü (Glossary).
gitnamespaces(7)
Git ad alanları (namespaces).
gitremote-helpers(7)
Uzak depolarla etkileşim kurmak için yardımcı programlar.
gitsubmodules(7)
Bir depoyu diğerinin içine yerleştirme.
gittutorial(7)
Git'e eğitimsel bir giriş.
gittutorial-2(7)
Git'e eğitimsel bir giriş: ikinci bölüm.
gitworkflows(7)
An overview of recommended workflows with Git.
DEPO, KOMUT VE DOSYA ARAYÜZLERİ
Bu belgeler, kullanıcıların doğrudan etkileşim kurması beklenen depo ve komut arayüzlerini tartışmaktadır. Kriterler hakkında daha fazla ayrıntı için git-help(1) kılavuzundaki --user-formats bölümüne bakın.
gitattributes(5)
Yol başına (per path) öznitelikleri tanımlama.
gitcli(7)
Git komut satırı arayüzü ve kuralları.
githooks(5)
Git tarafından kullanılan kancalar (hooks).
gitignore(5)
Göz ardı edilecek, kasıtlı olarak takip edilmeyen (untracked) dosyaları belirtir.
gitmailmap(5)
Yazar/işleyici (committer) adlarını ve/veya e-posta adreslerini eşler.
gitmodules(5)
Alt modül (submodule) özelliklerini tanımlama.
gitrevisions(7)
Git için revizyonları ve aralıkları belirtme.
DOSYA BİÇİMLERİ, PROTOKOLLER VE DİĞER GELİŞTİRİCİ ARAYÜZLERİ
Bu belgeler; dosya biçimlerini, ağ üzerinden aktarım protokollerini ve diğer Git geliştirici arayüzlerini tartışmaktadır. Bkz. git-help(1) kılavuzundaki --developer-interfaces.
gitprotocol-pack(5)
Paketlerin ağ üzerinden nasıl aktarıldığı.
gitprotocol-v2(5)
Git Wire Protokolü, Sürüm 2.
Yapılandırma Mekanizması
Git, depo başına ve kullanıcı başına olan özelleştirmeleri saklamak için basit bir metin biçimi kullanır. Böyle bir yapılandırma dosyası şuna benzeyebilir:
Bir '#' veya ';' karakteri yorum satırını belirtir.
; user identity
[user]
name = "Junio C Hamano"
email = "gitster@pobox.com"
Çeşitli komutlar yapılandırma dosyasından okuma yapar ve işlemlerini buna göre ayarlar. Bir liste ve yapılandırma mekanizması hakkında daha fazla ayrıntı için git-config(1) kılavuzuna bakın.