CINXE.COM
Git - Git Yapılandırması
<!DOCTYPE html> <html lang="tr"> <head> <meta charset='utf-8'> <meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Git - Git Yapılandırması</title> <link href="/favicon.ico" rel='shortcut icon' type='image/x-icon'> <link rel="stylesheet" href="/application.min.css"> <script src="/js/modernizr.js"></script> <script src="/js/modernize.js"></script> </head> <body id="documentation"> <div class="inner"> <header> <a href="/"><img src="/images/logo@2x.png" width="110" height="46" alt="Git" /></a> <span id="tagline"></span> <script type="text/javascript"> const taglines = [ "fast-version-control", "everything-is-local", "distributed-even-if-your-workflow-isnt", "local-branching-on-the-cheap", "distributed-is-the-new-centralized" ]; var tagline = taglines[Math.floor(Math.random() * taglines.length)]; document.getElementById('tagline').innerHTML = '--' + tagline; </script> <form id="search" action="/search/results"> <input id="search-text" name="search" placeholder="Type / to search entire site…" autocomplete="off" type="text" /> </form> <div id="search-results"></div> </header> </div> <div class="inner"> <div id="content-wrapper"> <div tabindex="1" class="sidebar-btn"></div> <aside class="sidebar" id="sidebar"> <nav> <ul> <li> <a href="/about">About</a> <ul> </ul> </li> <li> <a href="/doc" class="active">Documentation</a> <ul class="expanded"> <li> <a href="/docs">Reference</a> </li> <li> <a href="/book" class="active">Book</a> </li> <li> <a href="/videos">Videos</a> </li> <li> <a href="/doc/ext">External Links</a> </li> </ul> </li> <li> <a href="/downloads">Downloads</a> <ul > <li> <a href="/downloads/guis">GUI Clients</a> </li> <li> <a href="/downloads/logos">Logos</a> </li> </ul> </li> <li> <a href="/community">Community</a> </li> </ul> <hr class="sidebar"> <p> This book is available in <a href="/book/en/v2/Customizing-Git-Git-Configuration">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/Git%e2%80%99i-F%c9%99rdil%c9%99%c5%9fdirm%c9%99k-Git-Konfiqurasiyas%c4%b1">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg/v2/Git-%d0%bd%d0%b0-%d0%bd%d0%b8%d1%81%d0%ba%d0%be-%d0%bd%d0%b8%d0%b2%d0%be-Plumbing-%d0%b8-Porcelain-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/Git-einrichten-Git-Konfiguration">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/Personalizaci%c3%b3n-de-Git-Configuraci%c3%b3n-de-Git">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/Personnalisation-de-Git-Configuration-de-Git">Français</a>,</td></tr> <tr><td><a href="/book/gr">Ελληνικά</a>,</td></tr> <tr><td><a href="/book/ja/v2/Git-%e3%81%ae%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%9e%e3%82%a4%e3%82%ba-Git-%e3%81%ae%e8%a8%ad%e5%ae%9a">日本語</a>,</td></tr> <tr><td><a href="/book/ko/v2/Git%eb%a7%9e%ec%b6%a4-Git-%ec%84%a4%ec%a0%95%ed%95%98%ea%b8%b0">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/Git-aanpassen-Git-configuratie">Nederlands</a>,</td></tr> <tr><td><a href="/book/ru/v2/%d0%9d%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-Git-%d0%9a%d0%be%d0%bd%d1%84%d0%b8%d0%b3%d1%83%d1%80%d0%b0%d1%86%d0%b8%d1%8f-Git">Русский</a>,</td></tr> <tr><td><a href="/book/sl/v2/Prilagoditev-Gita-Konfiguracija-Git">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/Pag-aangkop-sa-Sariling-Pangangailagan-ng-Git-Kompigurasyon-ng-Git">Tagalog</a>,</td></tr> <tr><td><a href="/book/uk/v2/%d0%9d%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-Git-%d0%9a%d0%be%d0%bd%d1%84%d1%96%d0%b3%d1%83%d1%80%d0%b0%d1%86%d1%96%d1%8f-Git">Українська</a></td></tr> <tr><td><a href="/book/zh/v2/%e8%87%aa%e5%ae%9a%e4%b9%89-Git-%e9%85%8d%e7%bd%ae-Git">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/Customizing-Git-Git-Configuration">Čeština</a>,</td></tr> <tr><td><a href="/book/mk/v2/%d0%9f%d0%b5%d1%80%d1%81%d0%be%d0%bd%d0%b0%d0%bb%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%98%d0%b0-%d0%bd%d0%b0-Git-Git-Configuration">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/Dostosowywanie-Gita-Konfiguracja-Gita">Polski</a>,</td></tr> <tr><td><a href="/book/sr/v2/%d0%9f%d1%80%d0%b8%d0%bb%d0%b0%d0%b3%d0%be%d1%92%d0%b0%d0%b2%d0%b0%d1%9a%d0%b5-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%b0-%d0%93%d0%b8%d1%82-%d0%9a%d0%be%d0%bd%d1%84%d0%b8%d0%b3%d1%83%d1%80%d0%b8%d1%81%d0%b0%d1%9a%d0%b5-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%b0-%d0%93%d0%b8%d1%82">Српски</a>,</td></tr> <tr><td><a href="/book/uz/v2/Customizing-Git-Git-Configuration">Ўзбекча</a>,</td></tr> <tr><td><a href="/book/zh-tw/v2/Customizing-Git-Git-Configuration">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/Customizing-Git-Git-Configuration">Беларуская</a>,</td></tr> <tr><td><a href="/book/fa/v2/Customizing-Git-Git-Configuration" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/Kostumisasi-Git-Konfigurasi-Git">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/Customizing-Git-Git-Configuration">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/Customizing-Git-Git-Configuration">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/Customizing-Git-Git-Configuration">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/Personalizar-o-Git-Git-Configuration">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/Customizing-Git-Git-Configuration">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/Git%e2%80%99i-%c3%96zelle%c5%9ftirmek-Git-Yap%c4%b1land%c4%b1rmas%c4%b1">Türkçe</a>.</td></tr> </table> </p> <hr class="sidebar"/> <p> The source of this book is <a href="https://github.com/progit/progit2-tr">hosted on GitHub.</a></br> Patches, suggestions and comments are welcome. </p> </nav> </aside> <div id="content"> <div id="book-chapters"> <a class="dropdown-trigger" id="book-chapters-trigger" data-panel-id="chapters-dropdown" href="#">Chapters ▾</a> <div class='dropdown-panel' id='chapters-dropdown'> <div class='three-column'> <div class="column-left"> <ol class='book-toc'> <li class='chapter'> <h2>1. <a href="/book/tr/v2/Ba%c5%9flang%c4%b1%c3%a7-S%c3%bcr%c3%bcm-Denetimi">Başlangıç</a></h2> <ol> <li> 1.1 <a href="/book/tr/v2/Ba%c5%9flang%c4%b1%c3%a7-S%c3%bcr%c3%bcm-Denetimi">Sürüm Denetimi</a> </li> <li> 1.2 <a href="/book/tr/v2/Ba%c5%9flang%c4%b1%c3%a7-Git%e2%80%99in-K%c4%b1sa-Tarih%c3%a7esi">Git’in Kısa Tarihçesi</a> </li> <li> 1.3 <a href="/book/tr/v2/Ba%c5%9flang%c4%b1%c3%a7-Git-Nedir%3F">Git Nedir?</a> </li> <li> 1.4 <a href="/book/tr/v2/Ba%c5%9flang%c4%b1%c3%a7-Komut-Sat%c4%b1r%c4%b1">Komut Satırı</a> </li> <li> 1.5 <a href="/book/tr/v2/Ba%c5%9flang%c4%b1%c3%a7-Git%e2%80%99i-Y%c3%bcklemek">Git’i Yüklemek</a> </li> <li> 1.6 <a href="/book/tr/v2/Ba%c5%9flang%c4%b1%c3%a7-Git%e2%80%99i-%c4%b0lk-Defa-Kurmak">Git’i İlk Defa Kurmak</a> </li> <li> 1.7 <a href="/book/tr/v2/Ba%c5%9flang%c4%b1%c3%a7-Yard%c4%b1m-Almak">Yardım Almak</a> </li> <li> 1.8 <a href="/book/tr/v2/Ba%c5%9flang%c4%b1%c3%a7-%c3%96zet">Özet</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/tr/v2/Git-Temelleri-Bir-Git-Reposu-Olu%c5%9fturma/Kopyalama">Git Temelleri</a></h2> <ol> <li> 2.1 <a href="/book/tr/v2/Git-Temelleri-Bir-Git-Reposu-Olu%c5%9fturma/Kopyalama">Bir Git Reposu Oluşturma/Kopyalama</a> </li> <li> 2.2 <a href="/book/tr/v2/Git-Temelleri-De%c4%9fi%c5%9fikliklerin-Repoya-Kaydedilmesi">Değişikliklerin Repoya Kaydedilmesi</a> </li> <li> 2.3 <a href="/book/tr/v2/Git-Temelleri-Katk%c4%b1-Ge%c3%a7mi%c5%9fini-G%c3%b6r%c3%bcnt%c3%bcleme">Katkı Geçmişini Görüntüleme</a> </li> <li> 2.4 <a href="/book/tr/v2/Git-Temelleri-De%c4%9fi%c5%9fiklikleri-Geri-Alma">Değişiklikleri Geri Alma</a> </li> <li> 2.5 <a href="/book/tr/v2/Git-Temelleri-Uzak-Repo-ile-%c3%87al%c4%b1%c5%9fmak">Uzak Repo ile Çalışmak</a> </li> <li> 2.6 <a href="/book/tr/v2/Git-Temelleri-Etiketleme">Etiketleme</a> </li> <li> 2.7 <a href="/book/tr/v2/Git-Temelleri-Komut-K%c4%b1sayolu-Alias-Ayarlama">Komut Kısayolu (Alias) Ayarlama</a> </li> <li> 2.8 <a href="/book/tr/v2/Git-Temelleri-%c3%96zet">Özet</a> </li> </ol> </li> <li class='chapter'> <h2>3. <a href="/book/tr/v2/Git-Dallar%c4%b1-Dallar">Git Dalları</a></h2> <ol> <li> 3.1 <a href="/book/tr/v2/Git-Dallar%c4%b1-Dallar">Dallar</a> </li> <li> 3.2 <a href="/book/tr/v2/Git-Dallar%c4%b1-K%c4%b1saca-Dalland%c4%b1rma-ve-Birle%c5%9ftirme-Temelleri">Kısaca Dallandırma ve Birleştirme Temelleri</a> </li> <li> 3.3 <a href="/book/tr/v2/Git-Dallar%c4%b1-Dal-Y%c3%b6netimi">Dal Yönetimi</a> </li> <li> 3.4 <a href="/book/tr/v2/Git-Dallar%c4%b1-%c4%b0%c5%9f-Ak%c4%b1%c5%9f%c4%b1-Dalland%c4%b1rmas%c4%b1">İş Akışı Dallandırması</a> </li> <li> 3.5 <a href="/book/tr/v2/Git-Dallar%c4%b1-Uzak-Dallar">Uzak Dallar</a> </li> <li> 3.6 <a href="/book/tr/v2/Git-Dallar%c4%b1-Yeniden-Temelleme-rebase">Yeniden Temelleme (rebase)</a> </li> <li> 3.7 <a href="/book/tr/v2/Git-Dallar%c4%b1-%c3%96zet">Özet</a> </li> </ol> </li> <li class='chapter'> <h2>4. <a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-%c4%b0leti%c5%9fim-Kurallar%c4%b1-Protocols">Bir Sunucuda Git Kurma</a></h2> <ol> <li> 4.1 <a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-%c4%b0leti%c5%9fim-Kurallar%c4%b1-Protocols">İletişim Kuralları (Protocols)</a> </li> <li> 4.2 <a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-Bir-Sunucuda-Git-Kurma">Bir Sunucuda Git Kurma</a> </li> <li> 4.3 <a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-SSH-Ortak-Anahtar%c4%b1n%c4%b1z%c4%b1-Olu%c5%9fturma">SSH Ortak Anahtarınızı Oluşturma</a> </li> <li> 4.4 <a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-Sunucu-Kurma">Sunucu Kurma</a> </li> <li> 4.5 <a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-Git-Cini-Daemon">Git Cini (Daemon)</a> </li> <li> 4.6 <a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-Ak%c4%b1ll%c4%b1-HTTP">Akıllı HTTP</a> </li> <li> 4.7 <a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-GitLab">GitLab</a> </li> <li> 4.9 <a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-%c3%9c%c3%a7%c3%bcnc%c3%bc-Taraf-Bar%c4%b1nd%c4%b1rma-Hosting-Se%c3%a7enekleri">Üçüncü Taraf Barındırma (Hosting) Seçenekleri</a> </li> <li> 4.10 <a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-%c3%96zet">Özet</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/tr/v2/Da%c4%9f%c4%b1t%c4%b1k-Git-Da%c4%9f%c4%b1t%c4%b1k-%c4%b0%c5%9f-Ak%c4%b1%c5%9flar%c4%b1">Dağıtık Git</a></h2> <ol> <li> 5.1 <a href="/book/tr/v2/Da%c4%9f%c4%b1t%c4%b1k-Git-Da%c4%9f%c4%b1t%c4%b1k-%c4%b0%c5%9f-Ak%c4%b1%c5%9flar%c4%b1">Dağıtık İş Akışları</a> </li> <li> 5.2 <a href="/book/tr/v2/Da%c4%9f%c4%b1t%c4%b1k-Git-Projenin-Geli%c5%9fiminde-Rol-Almak">Projenin Gelişiminde Rol Almak</a> </li> <li> 5.3 <a href="/book/tr/v2/Da%c4%9f%c4%b1t%c4%b1k-Git-Bir-Projeyi-Y%c3%bcr%c3%bctme">Bir Projeyi Yürütme</a> </li> <li> 5.4 <a href="/book/tr/v2/Da%c4%9f%c4%b1t%c4%b1k-Git-%c3%96zet">Özet</a> </li> </ol> </li> </ol> </div> <div class='column-middle'> <ol class='book-toc'> <li class='chapter'> <h2>6. <a href="/book/tr/v2/GitHub-Bir-Projeye-Katk%c4%b1da-Bulunmak">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/tr/v2/GitHub-Bir-Projeye-Katk%c4%b1da-Bulunmak">Bir Projeye Katkıda Bulunmak</a> </li> <li> 6.2 <a href="/book/tr/v2/GitHub-Proje-Bak%c4%b1m%c4%b1">Proje Bakımı</a> </li> <li> 6.3 <a href="/book/tr/v2/GitHub-Kurumsal-Y%c3%b6netim">Kurumsal Yönetim</a> </li> <li> 6.4 <a href="/book/tr/v2/GitHub-GitHub%e2%80%99%c4%b1-otomatikle%c5%9ftirme">GitHub’ı otomatikleştirme</a> </li> <li> 6.5 <a href="/book/tr/v2/GitHub-%c3%96zet">Özet</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-D%c3%bczeltme-Se%c3%a7imi">Git Araçları</a></h2> <ol> <li> 7.1 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-D%c3%bczeltme-Se%c3%a7imi">Düzeltme Seçimi</a> </li> <li> 7.2 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-Etkile%c5%9fimli-%c4%b0zlemleme-Staging">Etkileşimli İzlemleme (Staging)</a> </li> <li> 7.3 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-Saklama-ve-Silme">Saklama ve Silme</a> </li> <li> 7.4 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-%c3%87al%c4%b1%c5%9fman%c4%b1z%c4%b1-%c4%b0mzalama">Çalışmanızı İmzalama</a> </li> <li> 7.5 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-Arama">Arama</a> </li> <li> 7.6 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-Ge%c3%a7mi%c5%9fi-Yeniden-Yazma">Geçmişi Yeniden Yazma</a> </li> <li> 7.7 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-Reset-Komutunun-Gizemleri">Reset Komutunun Gizemleri</a> </li> <li> 7.8 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-%c4%b0leri-Seviye-Birle%c5%9ftirme">İleri Seviye Birleştirme</a> </li> <li> 7.9 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-Rerere">Rerere</a> </li> <li> 7.10 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-Git%e2%80%99le-Hata-Ay%c4%b1klama">Git’le Hata Ayıklama</a> </li> <li> 7.11 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-Alt-Mod%c3%bcller">Alt Modüller</a> </li> <li> 7.12 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-Demetleme-Bundling">Demetleme (Bundling)</a> </li> <li> 7.13 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-Git-Nesnesini-De%c4%9fi%c5%9ftirme">Git Nesnesini Değiştirme</a> </li> <li> 7.14 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-Kimlik-Bilgisi-Depolama">Kimlik Bilgisi Depolama</a> </li> <li> 7.15 <a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-%c3%96zet">Özet</a> </li> </ol> </li> <li class='chapter'> <h2>8. <a href="/book/tr/v2/Git%e2%80%99i-%c3%96zelle%c5%9ftirmek-Git-Yap%c4%b1land%c4%b1rmas%c4%b1">Git’i Özelleştirmek</a></h2> <ol> <li> 8.1 <a href="/book/tr/v2/Git%e2%80%99i-%c3%96zelle%c5%9ftirmek-Git-Yap%c4%b1land%c4%b1rmas%c4%b1" class="active">Git Yapılandırması</a> </li> <li> 8.2 <a href="/book/tr/v2/Git%e2%80%99i-%c3%96zelle%c5%9ftirmek-Git-Nitelikleri">Git Nitelikleri</a> </li> <li> 8.3 <a href="/book/tr/v2/Git%e2%80%99i-%c3%96zelle%c5%9ftirmek-Git-Kancalar%c4%b1-Hooks">Git Kancaları (Hooks)</a> </li> <li> 8.4 <a href="/book/tr/v2/Git%e2%80%99i-%c3%96zelle%c5%9ftirmek-Bir-%c3%96rnek:-Mecburi-Git-Politikas%c4%b1">Bir Örnek: Mecburi Git Politikası</a> </li> <li> 8.5 <a href="/book/tr/v2/Git%e2%80%99i-%c3%96zelle%c5%9ftirmek-%c3%96zet">Özet</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/tr/v2/Git-ve-Di%c4%9fer-Sistemler-%c4%b0stemci-Olarak-Git">Git ve Diğer Sistemler</a></h2> <ol> <li> 9.1 <a href="/book/tr/v2/Git-ve-Di%c4%9fer-Sistemler-%c4%b0stemci-Olarak-Git">İstemci Olarak Git</a> </li> <li> 9.2 <a href="/book/tr/v2/Git-ve-Di%c4%9fer-Sistemler-Git%e2%80%99e-Ge%c3%a7i%c5%9f">Git’e Geçiş</a> </li> <li> 9.3 <a href="/book/tr/v2/Git-ve-Di%c4%9fer-Sistemler-%c3%96zet">Özet</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/tr/v2/Dahili-Git-%c3%96geleri-Tesisat-ve-D%c3%b6%c5%9feme-Plumbing-ve-Porcelain">Dahili Git Ögeleri</a></h2> <ol> <li> 10.1 <a href="/book/tr/v2/Dahili-Git-%c3%96geleri-Tesisat-ve-D%c3%b6%c5%9feme-Plumbing-ve-Porcelain">Tesisat ve Döşeme (Plumbing ve Porcelain)</a> </li> <li> 10.2 <a href="/book/tr/v2/Dahili-Git-%c3%96geleri-Git-Nesneleri">Git Nesneleri</a> </li> <li> 10.3 <a href="/book/tr/v2/Dahili-Git-%c3%96geleri-Git-Referanslar%c4%b1">Git Referansları</a> </li> <li> 10.4 <a href="/book/tr/v2/Dahili-Git-%c3%96geleri-Packfiles">Packfiles</a> </li> <li> 10.5 <a href="/book/tr/v2/Dahili-Git-%c3%96geleri-Refspec">Refspec</a> </li> <li> 10.6 <a href="/book/tr/v2/Dahili-Git-%c3%96geleri-Transfer-Protokolleri">Transfer Protokolleri</a> </li> <li> 10.7 <a href="/book/tr/v2/Dahili-Git-%c3%96geleri-Bak%c4%b1m-ve-Veri-Kurtarma">Bakım ve Veri Kurtarma</a> </li> <li> 10.8 <a href="/book/tr/v2/Dahili-Git-%c3%96geleri-Ortam-De%c4%9fi%c5%9fkenleri">Ortam Değişkenleri</a> </li> <li> 10.9 <a href="/book/tr/v2/Dahili-Git-%c3%96geleri-%c3%96zet">Özet</a> </li> </ol> </li> </ol> </div> <div class='column-right'> <ol class='book-toc'> <li class='chapter'> <h2>A1. <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-A:-Di%c4%9fer-Ortamlarda-Git-G%c3%b6rsel-Aray%c3%bczler">Ek bölüm A: Diğer Ortamlarda Git</a></h2> <ol> <li> A1.1 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-A:-Di%c4%9fer-Ortamlarda-Git-G%c3%b6rsel-Aray%c3%bczler">Görsel Arayüzler</a> </li> <li> A1.2 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-A:-Di%c4%9fer-Ortamlarda-Git-Visual-Studio-ile-Git">Visual Studio ile Git</a> </li> <li> A1.3 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-A:-Di%c4%9fer-Ortamlarda-Git-Visual-Studio-Code-ile-Git">Visual Studio Code ile Git</a> </li> <li> A1.4 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-A:-Di%c4%9fer-Ortamlarda-Git-Eclipse-ile-Git">Eclipse ile Git</a> </li> <li> A1.5 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-A:-Di%c4%9fer-Ortamlarda-Git-Sublime-Text-ile-Git">Sublime Text ile Git</a> </li> <li> A1.6 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-A:-Di%c4%9fer-Ortamlarda-Git-Bash-ile-Git">Bash ile Git</a> </li> <li> A1.7 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-A:-Di%c4%9fer-Ortamlarda-Git-Zsh-ile-Git">Zsh ile Git</a> </li> <li> A1.8 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-A:-Di%c4%9fer-Ortamlarda-Git-PowerShell-ile-Git">PowerShell ile Git</a> </li> <li> A1.9 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-A:-Di%c4%9fer-Ortamlarda-Git-%c3%96zet">Özet</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-B:-Git%e2%80%99i-Uygulamalar%c4%b1n%c4%b1za-G%c3%b6mmek-Git-Komut-Sat%c4%b1r%c4%b1">Ek bölüm B: Git’i Uygulamalarınıza Gömmek</a></h2> <ol> <li> A2.1 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-B:-Git%e2%80%99i-Uygulamalar%c4%b1n%c4%b1za-G%c3%b6mmek-Git-Komut-Sat%c4%b1r%c4%b1">Git Komut Satırı</a> </li> <li> A2.2 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-B:-Git%e2%80%99i-Uygulamalar%c4%b1n%c4%b1za-G%c3%b6mmek-Libgit2">Libgit2</a> </li> <li> A2.3 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-B:-Git%e2%80%99i-Uygulamalar%c4%b1n%c4%b1za-G%c3%b6mmek-JGit">JGit</a> </li> <li> A2.4 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-B:-Git%e2%80%99i-Uygulamalar%c4%b1n%c4%b1za-G%c3%b6mmek-go-git">go-git</a> </li> <li> A2.5 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-B:-Git%e2%80%99i-Uygulamalar%c4%b1n%c4%b1za-G%c3%b6mmek-Dulwich">Dulwich</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-Kurulum-ve-Yap%c4%b1land%c4%b1rma-Komutlar%c4%b1">Ek bölüm C: Git Komutları</a></h2> <ol> <li> A3.1 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-Kurulum-ve-Yap%c4%b1land%c4%b1rma-Komutlar%c4%b1">Kurulum ve Yapılandırma Komutları</a> </li> <li> A3.2 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-Proje-Olu%c5%9fturma-Komutlar%c4%b1">Proje Oluşturma Komutları</a> </li> <li> A3.3 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-K%c4%b1saca-Poz-Snapshot-Alma">Kısaca Poz (Snapshot) Alma</a> </li> <li> A3.4 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-Dalland%c4%b1rma-ve-Birle%c5%9ftirme-Komutlar%c4%b1">Dallandırma ve Birleştirme Komutları</a> </li> <li> A3.5 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-Projeleri-Payla%c5%9fma-ve-G%c3%bcncelleme-Komutlar%c4%b1">Projeleri Paylaşma ve Güncelleme Komutları</a> </li> <li> A3.6 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-%c4%b0nceleme-ve-Kar%c5%9f%c4%b1la%c5%9ft%c4%b1rma-Komutlar%c4%b1">İnceleme ve Karşılaştırma Komutları</a> </li> <li> A3.7 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-Hata-Ay%c4%b1klama-Debugging-Komutlar%c4%b1">Hata Ayıklama (Debugging) Komutları</a> </li> <li> A3.8 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-Yamalama-Patching">Yamalama (Patching)</a> </li> <li> A3.9 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-E-Posta-Komutlar%c4%b1">E-Posta Komutları</a> </li> <li> A3.10 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-Harici-Sistemler">Harici Sistemler</a> </li> <li> A3.11 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-Y%c3%b6netim">Yönetim</a> </li> <li> A3.12 <a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-Tesisat-Plumbing-Komutlar%c4%b1">Tesisat (Plumbing) Komutları</a> </li> </ol> </li> </ol> </div> </div> </div> <span class="light" id="edition"> 2nd Edition </span> </div> <div id="main" data-pagefind-filter="category:book" data-pagefind-meta="category:Book" data-pagefind-weight="0.05" data-pagefind-body class="book edition2"> <h1>8.1 Git’i Özelleştirmek - Git Yapılandırması</h1> <div> <p>Şimdiye kadar, Git’in nasıl çalıştığını ve nasıl kullanılacağını, ve kullanımınızı kolay ve verimli hale getirmek için Git’in sunduğu birçok aracı tanıttık. Bu bölümde, çeşitli önemli yapılandırma ayarlarını ve kancalar sistemini tanıtarak, Git’i daha özelleştirilmiş bir şekilde çalıştırmanın yollarını göreceğiz. Bu araçlarla, Git’i tam olarak sizin, şirketiniz veya grubunuzun ihtiyaç duyduğu şekilde çalıştırmak çok daha kolay olacaktır.</p> <h2 id="_git_config">Git Yapılandırması</h2> <div class="paragraph"> <p> <a href="/book/tr/v2/ch00/ch01-introduction">Başlangıç</a> bölümünde kısaca okuduğunuz gibi, <code>git config</code> komutu ile Git yapılandırma ayarlarını belirleyebilirsiniz. İlk yapmanız gereken şeylerden biri adınızı ve e-posta adresinizi ayarlamaktı.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com</code></pre> </div> </div> <div class="paragraph"> <p>Şimdi, Git kullanımınızı özelleştirmek için bu şekilde belirleyebileceğiniz daha ilginç seçeneklerden birkaçını öğreneceksiniz.</p> </div> <div class="paragraph"> <p>İlk olarak, hızlı bir gözden geçirme: Git, istediğiniz varsayılan olmayan davranışı belirlemek için bir dizi yapılandırma dosyası kullanır. Git, bu değerleri aramak için ilk olarak sistem genelinde <code>/etc/gitconfig</code> dosyasına bakar; bu dosya, sistemdeki her kullanıcıya ve onların tüm repolarına uygulanan ayarları içerir. <code>git config</code> komutuna <code>--system</code> seçeneğini eklerseniz, Git özellikle bu dosyadan okur ve buraya yazar.</p> </div> <div class="paragraph"> <p>Git’in bir sonraki baktığı yer, kullanıcıya özgü olan <code>~/.gitconfig</code> (ya da <code>~/.config/git/config</code>) dosyasıdır. <code>--global</code> seçeneğini ekleyerek Git’in bu dosyayı okuyup yazdırmasını sağlayabilirsiniz.</p> </div> <div class="paragraph"> <p>Son olarak, Git, şu anda kullandığınız repoya ait olan Git dizinindeki yapılandırma değerlerini arar (<code>.git/config</code>). Bu değerler yalnızca o repoya özgüdür ve <code>git config</code> komutuna <code>--local</code> seçeneğini eklemeyi temsil eder. (Hangi düzeyde çalışmak istediğinizi belirtmezseniz, varsayılan olarak bu ayar kullanılır.)</p> </div> <div class="paragraph"> <p>Bu "düzeylerin" (sistem, global, yerel) her biri, önceki düzeydeki değerleri geçersiz kılar; bu nedenle <code>.git/config</code> dosyasındaki değerler, örneğin, <code>/etc/gitconfig</code> dosyasındakilerin önüne geçer.</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Not</div> </td> <td class="content"> <div class="paragraph"> <p>Git’in yapılandırma dosyaları düz metindir. Bu nedenle bu değerleri doğru sözdizimini eklemek şartıyla, manuel olarak da belirleyebilirsiniz. Ancak genellikle <code>git config</code> komutunu çalıştırmak daha kolaydır.</p> </div> </td> </tr> </table> </div> <div class="sect3"> <h3 id="_temel_i̇stemci_yapılandırması">Temel İstemci Yapılandırması</h3> <div class="paragraph"> <p>Git tarafından tanınan yapılandırma seçenekleri iki kategoriye ayrılır: istemci tarafı ve sunucu tarafı. Seçeneklerin çoğu istemci tarafındadır (kişisel çalışma tercihlerinizi yapılandırır). Çok fazla yapılandırma seçeneği desteklenir, ancak bunların büyük bir kısmı yalnızca belirli uç durumlarda kullanışlıdır (burada sadece en yaygın ve kullanışlı seçenekleri ele alacağız). Git’in kullandığınız sürümünün tanıdığı tüm seçeneklerin bir listesini görmek istiyorsanız, şunu çalıştırabilirsiniz:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ man git-config</code></pre> </div> </div> <div class="paragraph"> <p>Bu komut, detaylı bir şekilde mevcut tüm seçenekleri listeler. Bu başvuru materyalini ayrıca şu adreste bulabilirsiniz: <a href="https://git-scm.com/docs/git-config" class="bare">https://git-scm.com/docs/git-config</a>.</p> </div> <div class="sect4"> <h4 id="_core_editor"><code>core.editor</code></h4> <div class="paragraph"> <p> Git varsayılan olarak, bir kabuk (shell) ortam değişkeni olan <code>VISUAL</code> veya <code>EDITOR</code> 'da sizin belirttiğiniz varsayılan metin düzenleyicisini kullanır, aksi durumdaysa katkı ve etiket mesajlarını oluşturmak ve düzenlemek için <code>vi</code> düzenleyicisine geri döner. Bu varsayılanı başka bir şeye değiştirmek için, <code>core.editor</code> ayarını kullanabilirsiniz:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global core.editor emacs</code></pre> </div> </div> <div class="paragraph"> <p>Artık, varsayılan kabuk düzenleyiciniz ne olursa olsun, Git mesajları düzenlemek için Emacs’i başlatacaktır.</p> </div> </div> <div class="sect4"> <h4 id="_commit_template"><code>commit.template</code></h4> <div class="paragraph"> <p> Bu değeri sisteminizde bir dosyanın yoluna ayarlarsanız, Git bu dosyayı bir katkı oluştururken varsayılan başlangıç mesajı olarak kullanacaktır. Özel bir katkı şablonu oluşturmanın önemi: bir katkı mesajı oluştururken, (kendinize veya başkalarına) doğru biçim ve stili hatırlatmak için kullanılabilmesidir.</p> </div> <div class="paragraph"> <p>Örneğin, <code>~/.gitmessage.txt</code> adresinde şöyle bir şablon dosyası düşünün:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-text" data-lang="text">Subject line (try to keep under 50 characters) Multi-line description of commit, feel free to be detailed. [Ticket: X]</code></pre> </div> </div> <div class="paragraph"> <p>Bu katkı şablonunun, katkı işleyen kişiyi; ( <code>git log --oneline</code> çıktısı için) başlık satırını kısa tutmaya, altına daha fazla ayrıntı eklemeye ve varsa bir soruna veya iş paketi takip numarasına atıfta bulunmaya yönelttiğini görebilirsiniz.</p> </div> <div class="paragraph"> <p><code>git commit</code> komutunu çalıştırdığınızda düzenleyicinizde görünen varsayılan mesajı bu şablon olarak kullanılması için, <code>commit.template</code> yapılandırma değerini ayarlayın:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global commit.template ~/.gitmessage.txt $ git commit</code></pre> </div> </div> <div class="paragraph"> <p>Daha sonra, bir katkı işlerken, düzenleyiciniz şöyle bir şey gösterecek:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-text" data-lang="text">Subject line (try to keep under 50 characters) Multi-line description of commit, feel free to be detailed. [Ticket: X] # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: lib/test.rb # ~ ~ ".git/COMMIT_EDITMSG" 14L, 297C</code></pre> </div> </div> <div class="paragraph"> <p>Eğer ekibinizin bir katkı mesajı politikası varsa, o politikanın bir şablonunu sisteminize yerleştirmek ve Git’i varsayılan olarak kullanması için yapılandırmak, bu politikanın düzenli olarak uygulanma şansını arttıracaktır.</p> </div> </div> <div class="sect4"> <h4 id="_core_pager"><code>core.pager</code></h4> <div class="paragraph"> <p> Bu ayar, Git’in <code>log</code> ve <code>diff</code> gibi çıktıları yazdırdığında hangi sayfa düzeninin kullanılacağını belirler. Bunu varsayılan olarak <code>less</code> şeklinde bırakabilir, <code>more</code> olarak ayarlanabilir veya boş bir dize olarak ayarlayarak devre dışı bırakabilirsiniz.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global core.pager ''</code></pre> </div> </div> <div class="paragraph"> <p>Bunu çalıştırırsanız, ne kadar uzun olursa olsun, Git tüm komutların çıktısını ekrana yazdırır.</p> </div> </div> <div class="sect4"> <h4 id="_user_signingkey"><code>user.signingkey</code></h4> <div class="paragraph"> <p> Eğer (<a href="/book/tr/v2/ch00/_signing">Çalışmanızı İmzalama</a> bölümünde anlatıldığı gibi) imzalı açıklama etiketleri oluşturuyorsanız, GPG imzalama anahtarınızı bir yapılandırma ayarı olarak belirlemeniz işlerinizi kolaylaştırır. Anahtar kimliğinizi şu şekilde ayarlayın:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global user.signingkey <gpg-key-id></code></pre> </div> </div> <div class="paragraph"> <p>Artık <code>git tag</code> komutu ile anahtarınızı belirtmeden etiketleri her seferinde imzalayabilirsiniz.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git tag -s <tag-name></code></pre> </div> </div> </div> <div class="sect4"> <h4 id="_core_excludesfile"><code>core.excludesfile</code></h4> <div class="paragraph"> <p> (<a href="/book/tr/v2/ch00/_ignoring">Dosyaları Yoksayma (Ignore)</a> bölümünde anlatıldığı gibi) projenizin <code>.gitignore</code> dosyasına belli dosya yolu desenleri koyarak, Git’in o dosyaları takip edilmeyen dosyalar olarak görmemesini veya <code>git add</code> komutunu çalıştırdığınızda onları izleme almaya çalışmamasını sağlayabilirsiniz.</p> </div> <div class="paragraph"> <p>Ancak bazen, çalıştığınız tüm repolarda belirli dosyaları yok saymak istersiniz. Bilgisayarınızda macOS çalışıyorsa, muhtemelen <code>.DS_Store</code> dosyalarını biliyorsunuzdur. Tercih ettiğiniz metin düzenleyici Emacs veya Vim ise, <code>~</code> ile biten veya <code>.swp</code> ile biten dosya adlarını biliyorsunuzdur.</p> </div> <div class="paragraph"> <p>Bu ayar, bir tür global <code>.gitignore</code> dosyası yazmanızı sağlar. Bu içeriklere sahip bir <code>~/.gitignore_global</code> dosyası oluşturur:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ini" data-lang="ini">*~ .*.swp .DS_Store</code></pre> </div> </div> <div class="olist lowerroman"> <ol class="lowerroman" type="i"> <li> <p>ve <code>git config --global core.excludesfile ~/.gitignore_global</code> komutunu çalıştırırsanız, Git artık bu dosyalarla ilgili sizi bir daha rahatsız etmeyecek.</p> </li> </ol> </div> </div> <div class="sect4"> <h4 id="_help_autocorrect"><code>help.autocorrect</code></h4> <div class="paragraph"> <p> Eğer bir komutu yanlış yazarsanız, size şuna benzer bir şey gösterir:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git chekcout master git: 'chekcout' is not a git command. See 'git --help'. Did you mean this? checkout</code></pre> </div> </div> <div class="paragraph"> <p>Git yardımcı olmak için ne anlatmaya çalıştığınızı anlamaya çalışır, ama sizin yerinize kendisi yapmaz. <code>help.autocorrect</code> 'i 1 olarak ayarlarsanız, Git bu komutu sizin için düzeltip otomatik olarak çalıştıracaktır:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git chekcout master WARNING: You called a Git command named 'chekcout', which does not exist. Continuing under the assumption that you meant 'checkout' in 0.1 seconds automatically...</code></pre> </div> </div> <div class="paragraph"> <p>"0.1 saniye" kısmına dikkat edin. <code>help.autocorrect</code> aslında onda bir saniyeyi temsil eden bir tamsayıdır. Bu nedenle, onu 50 olarak ayarlarsanız; Git size komutu otomatik düzeltmeden önce fikrinizi değiştirebilmeniz için 5 saniye verecektir.</p> </div> </div> </div> <div class="sect3"> <h3 id="_gitte_renkler">Git’te Renkler</h3> <div class="paragraph"> <p> Git, komut çıktısını hızlı ve kolay bir şekilde görsel olarak ayrıştırmaya büyük ölçüde yardımcı olan renkli terminal çıktısını tam destekler. Birkaç seçenek, renklendirmeyi tercihinize göre ayarlamanıza yardımcı olabilir.</p> </div> <div class="sect4"> <h4 id="_color_ui"><code>color.ui</code></h4> <div class="paragraph"> <p>Git, çoğu çıktıyı otomatik olarak renklendirir, ancak bu davranışı beğenmezseniz bir ana anahtar da vardır. Git’in tüm renkli terminal çıktısını kapatmak için şunu yapın:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global color.ui false</code></pre> </div> </div> <div class="paragraph"> <p>Varsayılan ayar <code>auto</code> 'dur. Bu, çıktı doğrudan bir terminale giderken renklendirme yapar, ancak çıktı bir boru (pipe) veya bir dosyaya yönlendirildiğinde renk kontrol kodlarını atlar.</p> </div> <div class="paragraph"> <p>Ayrıca, terminal ve borular arasındaki farkı yok saymak için onu <code>always</code> olarak da ayarlayabilirsiniz. Bunu nadiren isteyeceksiniz; çoğu zaman, yönlendirilmiş çıktınızda renk kodları istiyorsanız, Git buna zorlamak için komuta bir <code>--color</code> bayrağı geçirerek bunu sağlayabilirsiniz. Varsayılan ayar zaten neredeyse her zaman isteyeceğiniz şekildedir.</p> </div> </div> <div class="sect4"> <h4 id="_color"><code>color.*</code></h4> <div class="paragraph"> <p>Belirli komutların nasıl renklendirileceği hakkında daha özelleştirici olmak isterseniz, Git, fiile özgü renklendirme ayarları da sunar. Her birini <code>true</code>, <code>false</code> veya <code>always</code> olarak ayarlayabilirsiniz:</p> </div> <div class="literalblock"> <div class="content"> <pre>color.branch color.diff color.interactive color.status</pre> </div> </div> <div class="paragraph"> <p>Ayrıca, her birinin (her rengi geçersiz kılacak şekilde) çıktının belirli bölümleri için belirli renkler ayarlamak için kullanabileceğiniz alt ayarları vardır. Örneğin, diff çıktınızdaki meta bilgilerini mavi ön plan, siyah arka plan ve kalın metin olarak ayarlamak için şunu çalıştırabilirsiniz:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global color.diff.meta "blue black bold"</code></pre> </div> </div> <div class="paragraph"> <p>Renk seçeneğini aşağıdaki değerlerden biri olarak ayarlayabilirsiniz: <code>normal</code>, <code>black</code>, <code>red</code>, <code>green</code>, <code>yellow</code>, <code>blue</code>, <code>magenta</code>, <code>cyan</code>, veya <code>white</code>. Önceki örnekteki gibi kalın gibi bir öznitelik istiyorsanız, <code>bold</code>, <code>dim</code>, <code>ul</code> (altını çizmek), <code>blink</code>, ve <code>reverse</code> (ön planı ve arka planı değiştirmek) seçeneklerinden birini seçebilirsiniz.</p> </div> </div> </div> <div class="sect3"> <h3 id="_external_merge_tools">Harici Birleştirme ve Fark Araçları</h3> <div class="paragraph"> <p> Git’in bir diff için dahili bir uygulaması olsa da, bunun yerine harici bir araç kurabilirsiniz. Ayrıca, birleşim çakışmalarını manuel olarak çözmek yerine görsel bir çözüm aracı da kurabilirsiniz. Ücretsiz ve güzel görsel araç olduğu için "Perforce Visual Merge Tool (P4Merge)"'i diff ve birleştirme çözümleriniz için nasıl kuracağınızı göstereceğiz.</p> </div> <div class="paragraph"> <p>P4Merge tüm büyük platformlarda çalışır, bu yüzden kullancak olursanız, sorunsuzca çalıştırabiliyor olmalısınız. Örneklerde macOS ve Linux sistemlerinde çalışan dizin isimlerini kullanacağız; Windows için, <code>/usr/local/bin</code> 'i cihazınızdaki yürütülebilir yolla değiştirmeniz gerekecektir.</p> </div> <div class="paragraph"> <p>Başlamak için, Perforce’tan P4Merge’i indirin: <a href="https://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools" class="bare">https://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools</a> Sonraki adımda, komutlarınızı çalıştırmak için harici sargı betiklerini kuracaksınız. Bu örnekte yürütmek için macOS dizinini kullanacağız; diğer sistemlerde, <code>p4merge</code> ikilik dosyanızın kurulu olduğu dizin olacaktır. İkilik dosyanızı çağıran bir birleştirme sargı betiği olan, <code>extMerge</code> adındaki betiği sağlanan tüm argümanlarla kurun:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cat /usr/local/bin/extMerge #!/bin/sh /Applications/p4merge.app/Contents/MacOS/p4merge $*</code></pre> </div> </div> <div class="paragraph"> <p>Diff sargısı, yedi argümanın sağlandığını kontrol eder ve bunlardan ikisini birleştirme betiğinize aktarır. Git diff programına aşağıdaki argümanları varsayılan olarak iletir:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code>path old-file old-hex old-mode new-file new-hex new-mode</code></pre> </div> </div> <div class="paragraph"> <p>Sadece <code>old-file</code> ve <code>new-file</code> argümanlarına ihtiyacınız olduğu için, ihtiyacınız olanları iletmek için sargı betiğini kullanırsınız.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cat /usr/local/bin/extDiff #!/bin/sh [ $# -eq 7 ] && /usr/local/bin/extMerge "$2" "$5"</code></pre> </div> </div> <div class="paragraph"> <p>Bu araçların yürütülebilir olduğundan da emin olmanız gerekir:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ sudo chmod +x /usr/local/bin/extMerge $ sudo chmod +x /usr/local/bin/extDiff</code></pre> </div> </div> <div class="paragraph"> <p>Şimdi yapılandırma dosyanızı özel bir birleştirme çözümü ve diff araçları kullanacak şekilde ayarlayabilirsiniz. Bu bir dizi özel ayarı gerektirir: Git’e hangi stratejiyi kullanacağını söylemek için <code>merge.tool</code>, komutu nasıl çalıştıracağını belirtmek için <code>mergetool.<tool>.cmd</code>, programın çıkış kodunun birleştirme çözümünün başarılı olup olmadığını belirtmek için <code>mergetool.<tool>.trustExitCode</code>, ve diff için çalıştırılacak komutu belirtmek için <code>diff.external</code>. Bu yüzden ya dört yapılandırma komutunu da çalıştırırsınız</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global merge.tool extMerge $ git config --global mergetool.extMerge.cmd \ 'extMerge "$BASE" "$LOCAL" "$REMOTE" "$MERGED"' $ git config --global mergetool.extMerge.trustExitCode false $ git config --global diff.external extDiff</code></pre> </div> </div> <div class="paragraph"> <p>ya da <code>~/.gitconfig</code> dosyanızı düzenleyerek bu satırları eklersiniz:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ini" data-lang="ini">[merge] tool = extMerge [mergetool "extMerge"] cmd = extMerge "$BASE" "$LOCAL" "$REMOTE" "$MERGED" trustExitCode = false [diff] external = extDiff</code></pre> </div> </div> <div class="paragraph"> <p>Tüm bunları ayarlandıktan sonra, şunun gibi diff komutlarını çalıştırırsanız:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git diff 32d1776b1^ 32d1776b1</code></pre> </div> </div> <div class="paragraph"> <p>Komut satırında diff çıktısı almak yerine, Git P4Merge’i başlatır, ki bu da aşağı yukarı şöyle görünür:</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/tr/v2/images/p4merge.png" alt="P4Merge."> </div> <div class="title">Görsel 142. P4Merge.</div> </div> <div class="paragraph"> <p>İki dalı birleştirmeye çalışırsınız ve sonrasında birleştirme çakışmaları oluşursa, <code>git mergetool</code> komutunu çalıştırabilirsiniz; bu size bu GUI (görsel arayüz) aracılığıyla çakışmaları çözme fırsatı sunar.</p> </div> <div class="paragraph"> <p>Bu sargı kurulumunun güzel yanı, diff ve birleştirme araçlarınızı kolayca değiştirebilmenizdir. Örneğin, <code>extDiff</code> ve <code>extMerge</code> araçlarınızı KDiff3 aracını çalıştıracak şekilde değiştirmek için yapmanız gereken tek şey <code>extMerge</code> dosyanızı düzenlemektir:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cat /usr/local/bin/extMerge #!/bin/sh /Applications/kdiff3.app/Contents/MacOS/kdiff3 $*</code></pre> </div> </div> <div class="paragraph"> <p>Git artık, diff görüntülemek ve çakışmaları çözmek için KDiff3 aracını kullanacaktır.</p> </div> <div class="paragraph"> <p>Git, cmd yapılandırmasını ayarlamadan önce bir dizi başka birleştirme çözüm aracını kullanmak üzere önceden ayarlanmıştır. Desteklediği araçların bir listesini görmek için şunu deneyin:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git mergetool --tool-help 'git mergetool --tool=<tool>' may be set to one of the following: emerge gvimdiff gvimdiff2 opendiff p4merge vimdiff vimdiff2 The following tools are valid, but not currently available: araxis bc3 codecompare deltawalker diffmerge diffuse ecmerge kdiff3 meld tkdiff tortoisemerge xxdiff Some of the tools listed above only work in a windowed environment. If run in a terminal-only session, they will fail.</code></pre> </div> </div> <div class="paragraph"> <p>Eğer KDiff3 aracını, diff için değil de sadece birleştirme çözümü için kullanmak istiyorsanız; ama kdiff3 yürütülebilir dizininizde ise, o zaman şunu çalıştırabilirsiniz:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global merge.tool kdiff3</code></pre> </div> </div> <div class="paragraph"> <p>Eğer <code>extMerge</code> ve <code>extDiff</code> dosyalarını kurmak yerine bunu çalıştırırsanız, Git birleştirme çözümü için KDiff3’ü ve diff için normal Git diff aracını kullanacaktır.</p> </div> </div> <div class="sect3"> <h3 id="_biçimlendirme_ve_boşluklar">Biçimlendirme ve Boşluklar</h3> <div class="paragraph"> <p> Biçimlendirme ve boşluk sorunları, özellikle platformlar arası işbirliğinde birçok geliştiricinin karşılaştığı en sinir bozucu ve gözden kaçması kolay sorunlardan bazılarıdır. Editörler tarafından sessizce geliştirilen yamalar veya diğer işbirliği çalışmaları yüzünden sisteminize boşluk değişiklikleri aktarılması çok kolaydır. Özellikle dosyalarınız Windows sistemine bir şekilde dokunmuşsa, satır sonları değiştirilmiş olabilir. Git’in bu sorunlarla ilgili yardımcı olmak için, birkaç yapılandırma seçeneği vardır.</p> </div> <div class="sect4"> <h4 id="_core_autocrlf"><code>core.autocrlf</code></h4> <div class="paragraph"> <p> Windows üzerinde program geliştiriyor ama Windows kullanmayan insanlarla çalışıyorsanız (veya tam tersi), muhtemelen bir noktada satır sonu sorunlarıyla karşılaşacaksınız. Bunun nedeni, Windows’un dosyalarda yeni satırlar için hem bir taşıma-baş (CR: carriage-return) karakteri hem de bir satır besleme (LF: linefeed) karakteri kullanılırken, macOS ve Linux sistemlerinin ise yalnızca satır besleme karakterini kullanmasıdır. Bu, platformlar arası çalışmanın incelikli ama son derece sinir bozucu bir gerçeğidir. Windows’ta birçok editör mevcut LF tarzı satır sonu karakterlerini sessizce CRLF ile değiştirir veya kullanıcı enter tuşuna bastığında her iki satır sonu karakterini de ekler.</p> </div> <div class="paragraph"> <p>Git, bir dosyayı dizine eklerken CRLF satır sonlarını otomatik olarak LF’ye dönüştürerek ve kodu dosya sisteminize çıkardığınızda tersini yaparak bunu yönetebilir. Bu işlevselliği <code>core.autocrlf</code> ayarı ile etkinleştirebilirsiniz. Eğer Windows kullanıyorsanız, bunu <code>true</code> olarak ayarlayın: bunu yapmak, kodu çıkarırken LF sonlarını CRLF’ye dönüştürür:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global core.autocrlf true</code></pre> </div> </div> <div class="paragraph"> <p>Eğer LF satır sonları kullanan bir Linux veya macOS sistemindesiniz, o zaman dosyaları çıkarırken Git’in bunları otomatik olarak dönüştürmesini istemezsiniz; ancak, yanlışlıkla CRLF sonlarına sahip bir dosya tanıtılırsa, o zaman Git’in bunu düzeltmesini isteyebilirsiniz. <code>core.autocrlf</code> ayarını <code>input</code> olarak ayarlayarak Git’e CRLF’yi LF’ye dönüştürmesini ancak tersini yapmamasını söyleyebilirsiniz:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global core.autocrlf input</code></pre> </div> </div> <div class="paragraph"> <p>Bu yapılandırma size, Windows çıkarımlarında CRLF sonları bırakırken, macOS ve Linux sistemlerinde ve repoda LF sonları sağlamalıdır.</p> </div> <div class="paragraph"> <p>Eğer Windows programcısıysanız ve yalnızca Windows’a özgü bir proje yapıyorsanız; bu yapılandırma değerini <code>false</code> olarak ayarlayarak, bu işlevselliği kapatabilir ve taşıma karakterlerini repoya kaydedebilirsiniz:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global core.autocrlf false</code></pre> </div> </div> </div> <div class="sect4"> <h4 id="_core_whitespace"><code>core.whitespace</code></h4> <div class="paragraph"> <p>Git, bazı boşluk sorunlarını algılamak ve düzeltmek için önceden ayarlanmıştır. Altı temel boşluk sorununu arayabilir: Bunların üçü varsayılan olarak etkinleştirilmiştir ve kapatılabilir, üçü ise varsayılan olarak devre dışı bırakılmıştır ancak etkinleştirilebilir.</p> </div> <div class="paragraph"> <p>Varsayılan olarak açılan üç özellik: satırın sonundaki boşlukları arayan <code>blank-at-eol</code>, dosyanın sonundaki boş satırları fark eden <code>blank-at-eof</code>, ve bir satırın başında sekme öncesinde boşluk arayan <code>space-before-tab</code> 'dir.</p> </div> <div class="paragraph"> <p>Varsayılan olarak devre dışı bırakılan ancak etkinleştirilebilecek üç özellik ise: bir satırın başında boşluklar yerine sekme ile başlayan satırları arayan <code>indent-with-non-tab</code> (ve <code>tabwidth</code> seçeneği tarafından kontrol edilir), bir satırın girinti kısmındaki sekmeleri izleyen <code>tab-in-indent</code>, ve satırların sonunda taşıma karakterlerinin kabul edilebilir olduğunu belirten <code>cr-at-eol</code> 'dür.</p> </div> <div class="paragraph"> <p>Git’e bunlardan hangisinin etkinleştirilmesini istediğinizi, <code>core.whitespace</code> 'i açık veya kapalı olmasını istediğiniz değerlere virgülle ayırarak ayarlayarak, söyleyebilirsiniz. Bir seçeneği devre dışı bırakmak için adının önüne <code>-</code> ekleyebilirsiniz, veya tamamen ayar dizgisinden çıkararak varsayılan değeri kullanabilirsiniz. Örneğin, <code>space-before-tab</code> dışındaki tüm özelliklerin ayarlanmasını istiyorsanız, şunu yapabilirsiniz (hem <code>blank-at-eol</code> hem de <code>blank-at-eof</code> 'yi kapsayan <code>trailing-space</code> kısaltmasıyla):</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global core.whitespace \ trailing-space,-space-before-tab,indent-with-non-tab,tab-in-indent,cr-at-eol</code></pre> </div> </div> <div class="paragraph"> <p>Veya yalnızca özelleştirme kısmını belirtebilirsiniz:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global core.whitespace \ -space-before-tab,indent-with-non-tab,tab-in-indent,cr-at-eol</code></pre> </div> </div> <div class="paragraph"> <p><code>git diff</code> komutunu çalıştırdığınızda, Git bu sorunları algılayacak ve bunları katkılamadan önce düzeltebilmeniz için de renklendirecektir. Ayrıca, <code>git apply</code> ile yamaları uygularken size yardımcı olmak için bu değerleri kullanacaktır. Yamaları uygularken, Git’ten belirtilen boşluk sorunlarıyla ilgili sizi uyarmanızı isteyebilirsiniz:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git apply --whitespace=warn <patch></code></pre> </div> </div> <div class="paragraph"> <p>Ya da Git’ten yamanın uygulanmasından önce sorunu otomatik olarak düzeltmeye çalışmasını isteyebilirsiniz:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git apply --whitespace=fix <patch></code></pre> </div> </div> <div class="paragraph"> <p>Bu seçenekler <code>git rebase</code> komutuna da uygulanır. Eğer kodunuzu boşluk sorunlarını çözmeden katkılamış, ancak henüz üstakıma itmemişseniz; Git’in yamaları yeniden yazarken boşluk sorunlarını otomatik olarak düzeltmesi için <code>git rebase --whitespace=fix</code> komutunu çalıştırabilirsiniz.</p> </div> </div> </div> <div class="sect3"> <h3 id="_sunucu_yapılandırması">Sunucu Yapılandırması</h3> <div class="paragraph"> <p>Git’in sunucu tarafında bu kadar çok yapılandırma seçeneği mevcut değildir, ancak not almak isteyebileceğiniz birkaç ilginç seçenek vardır.</p> </div> <div class="sect4"> <h4 id="_receive_fsckobjects"><code>receive.fsckObjects</code></h4> <div class="paragraph"> <p>Git, bir itme işlemi sırasında alınan her nesnenin hala SHA-1 toplamına uymasını ve geçerli nesnelere işaret etmesini sağlayabilir. Ancak, bunu varsayılan olarak yapmaz. Bu oldukça maliyetli bir işlemdir ve özellikle büyük drpolar veya itme işlemlerinde süreci yavaşlatabilir. Her itme işleminde Git’in nesne tutarlılığını kontrol etmesini istiyorsanız, <code>receive.fsckObjects</code> ayarını true olarak ayarlayarak Git’i buna zorlayabilirsiniz:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --system receive.fsckObjects true</code></pre> </div> </div> <div class="paragraph"> <p>Artık, Git bir itme talebini kabul etmeden önce, reponun bütünlüğünü kontrol edecek ve hatalı (veya kötü niyetli) istemcilerin bozuk veri eklemesini engellemek için çaba gösterecektir.</p> </div> </div> <div class="sect4"> <h4 id="_receive_denynonfastforwards"><code>receive.denyNonFastForwards</code></h4> <div class="paragraph"> <p>Zaten ittiğiniz katkıları yeniden temeller (rebase) ve sonra tekrar itmeye çalışırsanız veya uzak dalın şu anda işaret ettiği katkıyı içermeyen dalına bir katkı göndermeye çalışırsanız reddedilirsiniz. Bu genellikle iyi bir politikadır; ancak yeniden temelleme durumunda, ne yaptığınızı bildiğinizden eminseniz ve uzak şubeyi Push komutunuza bir <em>-f</em> bayrağıyla güncellemeye zorlayabilirsiniz.</p> </div> <div class="paragraph"> <p>, uzak bir dala bir katkı itmek için, uzak dalın şu anda işaretlediği katkıyı içermeyen bir katkı iterseniz, reddedileceksiniz. Bu genellikle iyi bir politikadır; ancak yeniden temelleme durumunda, ne yaptığınızı bildiğinizden eminseniz, itme komutunuza <code>-f</code> bayrağı ekleyerek uzak dalı zorla güncelleyebilirsiniz.</p> </div> <div class="paragraph"> <p>Git’e zorla itme işlemlerini reddetmesini söylemek için <code>receive.denyNonFastForwards</code> ayarını belirleyin:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --system receive.denyNonFastForwards true</code></pre> </div> </div> <div class="paragraph"> <p>Bunu yapmanın diğer yolu, birazdan ele alacağımız sunucu tarafı kabul kancaları aracılığıyladır. Bu yaklaşım, belirli bir kullanıcı alt kümesine zorlamasız itmelere izin vermek gibi daha karmaşık işler yapmanıza olanak tanır.</p> </div> </div> <div class="sect4"> <h4 id="_receive_denydeletes"><code>receive.denyDeletes</code></h4> <div class="paragraph"> <p><code>denyNonFastForwards</code> politikasına yönelik çalışmaların biri, kullanıcının dalı silip ardından yeni referansla tekrar yüklemesidir. Bunu önlemek için, <code>receive.denyDeletes</code> ayarını true olarak ayarlayın:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --system receive.denyDeletes true</code></pre> </div> </div> <div class="paragraph"> <p>Bu ayar, dalların veya etiketlerin herhangi birinin silinmesini reddeder (hiçbir kullanıcı bunu yapamaz). Uzak dalları kaldırmak için, ref dosyalarını sunucudan manuel olarak kaldırmanız gerekir. Ayrıca, <a href="/book/tr/v2/ch00/_an_example_git_enforced_policy">Bir Örnek: Mecburi Git Politikası</a> bölümünde öğreneceğiniz gibi, ACL’ler aracılığıyla kullanıcı bazında bunu yapmanın daha ilginç yolları da vardır.</p> </div> </div> </div> <div id="nav"><a href="/book/tr/v2/Git-Araçları-Özet">prev</a> | <a href="/book/tr/v2/Git’i-Özelleştirmek-Git-Nitelikleri">next</a></div> </div> </div> </div> </div> <footer> <div class="site-source"> <a href="/site">About this site</a><br> Patches, suggestions, and comments are welcome. </div> <div class="sfc-member"> Git is a member of <a href="/sfc">Software Freedom Conservancy</a> </div> </footer> <a href="#top" class="no-js scrollToTop" id="scrollToTop" data-label="Scroll to top"> <img src="/images/icons/chevron-up@2x.png" width="20" height="20" alt="scroll-to-top"/> </a> <script src="/js/jquery-1.7.1.min.js"></script> <script src="/js/jquery-ui-1.8.18.custom.min.js"></script> <script src="/js/jquery.defaultvalue.js"></script> <script src="/js/session.min.js"></script> <script src="/js/application.min.js"></script> </div> </body> </html>