CINXE.COM

Git - プロジェクトへの貢献

<!DOCTYPE html> <html lang="ja"> <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 - プロジェクトへの貢献</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/GitHub-Contributing-to-a-Project">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/GitHub-Bir-Layih%c9%99y%c9%99-T%c3%b6hf%c9%99-Verm%c9%99k">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg/v2/%d0%9d%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%b2%d0%b0%d0%bd%d0%b5-%d0%bd%d0%b0-Git-Git-%d0%b0%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82%d0%b8">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/GitHub-Mitwirken-an-einem-Projekt">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/GitHub-Participando-en-Proyectos">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/GitHub-Contribution-%c3%a0-un-projet">Français</a>,</td></tr> <tr><td><a href="/book/gr">Ελληνικά</a>,</td></tr> <tr><td><a href="/book/ja/v2/GitHub-%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%b8%e3%81%ae%e8%b2%a2%e7%8c%ae">日本語</a>,</td></tr> <tr><td><a href="/book/ko/v2/GitHub-GitHub-%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8%ec%97%90-%ea%b8%b0%ec%97%ac%ed%95%98%ea%b8%b0">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/GitHub-Aan-een-project-bijdragen">Nederlands</a>,</td></tr> <tr><td><a href="/book/ru/v2/GitHub-%d0%92%d0%bd%d0%b5%d1%81%d0%b5%d0%bd%d0%b8%d0%b5-%d1%81%d0%be%d0%b1%d1%81%d1%82%d0%b2%d0%b5%d0%bd%d0%bd%d0%be%d0%b3%d0%be-%d0%b2%d0%ba%d0%bb%d0%b0%d0%b4%d0%b0-%d0%b2-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d1%8b">Русский</a>,</td></tr> <tr><td><a href="/book/sl/v2/GitHub-Prispevek-k-projektu">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/GitHub-Pag-aambag-sa-isang-Proyekto">Tagalog</a>,</td></tr> <tr><td><a href="/book/uk/v2/GitHub-%d0%af%d0%ba-%d0%b7%d1%80%d0%be%d0%b1%d0%b8%d1%82%d0%b8-%d0%b2%d0%bd%d0%b5%d1%81%d0%be%d0%ba-%d0%b4%d0%be-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d1%83">Українська</a></td></tr> <tr><td><a href="/book/zh/v2/GitHub-%e5%af%b9%e9%a1%b9%e7%9b%ae%e5%81%9a%e5%87%ba%e8%b4%a1%e7%8c%ae">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/GitHub-P%c5%99isp%c3%adv%c3%a1n%c3%ad-do-projektu">Čeština</a>,</td></tr> <tr><td><a href="/book/mk/v2/GitHub-%d0%9f%d1%80%d0%b8%d0%b4%d0%be%d0%bd%d0%b5%d1%81-%d0%ba%d0%be%d0%bd-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/GitHub-Contributing-to-a-Project">Polski</a>,</td></tr> <tr><td><a href="/book/sr/v2/GitHub-%d0%9a%d0%b0%d0%ba%d0%be-%d1%81%d0%b5-%d0%b4%d0%b0%d1%98%d0%b5-%d0%b4%d0%be%d0%bf%d1%80%d0%b8%d0%bd%d0%be%d1%81-%d0%bf%d1%80%d0%be%d1%98%d0%b5%d0%ba%d1%82%d1%83">Српски</a>,</td></tr> <tr><td><a href="/book/uz/v2/GitHub-Contributing-to-a-Project">Ўзбекча</a>,</td></tr> <tr><td><a href="/book/zh-tw/v2/GitHub-%e5%8f%83%e8%88%87%e4%b8%80%e5%80%8b%e5%b0%88%e6%a1%88">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/GitHub-Contributing-to-a-Project">Беларуская</a>,</td></tr> <tr><td><a href="/book/fa/v2/GitHub-Contributing-to-a-Project" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/GitHub-Contributing-to-a-Project">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/GitHub-Contributing-to-a-Project">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/GitHub-Contributing-to-a-Project">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/GitHub-Contribuindo-em-um-projeto">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/GitHub-Contributing-to-a-Project">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/GitHub-Contributing-to-a-Project">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/GitHub-Proje-Bak%c4%b1m%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-ja">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/ja/v2/%e4%bd%bf%e3%81%84%e5%a7%8b%e3%82%81%e3%82%8b-%e3%83%90%e3%83%bc%e3%82%b8%e3%83%a7%e3%83%b3%e7%ae%a1%e7%90%86%e3%81%ab%e9%96%a2%e3%81%97%e3%81%a6">使い始める</a></h2> <ol> <li> 1.1 <a href="/book/ja/v2/%e4%bd%bf%e3%81%84%e5%a7%8b%e3%82%81%e3%82%8b-%e3%83%90%e3%83%bc%e3%82%b8%e3%83%a7%e3%83%b3%e7%ae%a1%e7%90%86%e3%81%ab%e9%96%a2%e3%81%97%e3%81%a6">バージョン管理に関して</a> </li> <li> 1.2 <a href="/book/ja/v2/%e4%bd%bf%e3%81%84%e5%a7%8b%e3%82%81%e3%82%8b-Git%e7%95%a5%e5%8f%b2">Git略史</a> </li> <li> 1.3 <a href="/book/ja/v2/%e4%bd%bf%e3%81%84%e5%a7%8b%e3%82%81%e3%82%8b-Git%e3%81%ae%e5%9f%ba%e6%9c%ac">Gitの基本</a> </li> <li> 1.4 <a href="/book/ja/v2/%e4%bd%bf%e3%81%84%e5%a7%8b%e3%82%81%e3%82%8b-%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%83%a9%e3%82%a4%e3%83%b3">コマンドライン</a> </li> <li> 1.5 <a href="/book/ja/v2/%e4%bd%bf%e3%81%84%e5%a7%8b%e3%82%81%e3%82%8b-Git%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab">Gitのインストール</a> </li> <li> 1.6 <a href="/book/ja/v2/%e4%bd%bf%e3%81%84%e5%a7%8b%e3%82%81%e3%82%8b-%e6%9c%80%e5%88%9d%e3%81%aeGit%e3%81%ae%e6%a7%8b%e6%88%90">最初のGitの構成</a> </li> <li> 1.7 <a href="/book/ja/v2/%e4%bd%bf%e3%81%84%e5%a7%8b%e3%82%81%e3%82%8b-%e3%83%98%e3%83%ab%e3%83%97%e3%82%92%e8%a6%8b%e3%82%8b">ヘルプを見る</a> </li> <li> 1.8 <a href="/book/ja/v2/%e4%bd%bf%e3%81%84%e5%a7%8b%e3%82%81%e3%82%8b-%e3%81%be%e3%81%a8%e3%82%81">まとめ</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/ja/v2/Git-%e3%81%ae%e5%9f%ba%e6%9c%ac-Git-%e3%83%aa%e3%83%9d%e3%82%b8%e3%83%88%e3%83%aa%e3%81%ae%e5%8f%96%e5%be%97">Git の基本</a></h2> <ol> <li> 2.1 <a href="/book/ja/v2/Git-%e3%81%ae%e5%9f%ba%e6%9c%ac-Git-%e3%83%aa%e3%83%9d%e3%82%b8%e3%83%88%e3%83%aa%e3%81%ae%e5%8f%96%e5%be%97">Git リポジトリの取得</a> </li> <li> 2.2 <a href="/book/ja/v2/Git-%e3%81%ae%e5%9f%ba%e6%9c%ac-%e5%a4%89%e6%9b%b4%e5%86%85%e5%ae%b9%e3%81%ae%e3%83%aa%e3%83%9d%e3%82%b8%e3%83%88%e3%83%aa%e3%81%b8%e3%81%ae%e8%a8%98%e9%8c%b2">変更内容のリポジトリへの記録</a> </li> <li> 2.3 <a href="/book/ja/v2/Git-%e3%81%ae%e5%9f%ba%e6%9c%ac-%e3%82%b3%e3%83%9f%e3%83%83%e3%83%88%e5%b1%a5%e6%ad%b4%e3%81%ae%e9%96%b2%e8%a6%a7">コミット履歴の閲覧</a> </li> <li> 2.4 <a href="/book/ja/v2/Git-%e3%81%ae%e5%9f%ba%e6%9c%ac-%e4%bd%9c%e6%a5%ad%e3%81%ae%e3%82%84%e3%82%8a%e7%9b%b4%e3%81%97">作業のやり直し</a> </li> <li> 2.5 <a href="/book/ja/v2/Git-%e3%81%ae%e5%9f%ba%e6%9c%ac-%e3%83%aa%e3%83%a2%e3%83%bc%e3%83%88%e3%81%a7%e3%81%ae%e4%bd%9c%e6%a5%ad">リモートでの作業</a> </li> <li> 2.6 <a href="/book/ja/v2/Git-%e3%81%ae%e5%9f%ba%e6%9c%ac-%e3%82%bf%e3%82%b0">タグ</a> </li> <li> 2.7 <a href="/book/ja/v2/Git-%e3%81%ae%e5%9f%ba%e6%9c%ac-Git-%e3%82%a8%e3%82%a4%e3%83%aa%e3%82%a2%e3%82%b9">Git エイリアス</a> </li> <li> 2.8 <a href="/book/ja/v2/Git-%e3%81%ae%e5%9f%ba%e6%9c%ac-%e3%81%be%e3%81%a8%e3%82%81">まとめ</a> </li> </ol> </li> <li class='chapter'> <h2>3. <a href="/book/ja/v2/Git-%e3%81%ae%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e6%a9%9f%e8%83%bd-%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e3%81%a8%e3%81%af">Git のブランチ機能</a></h2> <ol> <li> 3.1 <a href="/book/ja/v2/Git-%e3%81%ae%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e6%a9%9f%e8%83%bd-%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e3%81%a8%e3%81%af">ブランチとは</a> </li> <li> 3.2 <a href="/book/ja/v2/Git-%e3%81%ae%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e6%a9%9f%e8%83%bd-%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e3%81%a8%e3%83%9e%e3%83%bc%e3%82%b8%e3%81%ae%e5%9f%ba%e6%9c%ac">ブランチとマージの基本</a> </li> <li> 3.3 <a href="/book/ja/v2/Git-%e3%81%ae%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e6%a9%9f%e8%83%bd-%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e3%81%ae%e7%ae%a1%e7%90%86">ブランチの管理</a> </li> <li> 3.4 <a href="/book/ja/v2/Git-%e3%81%ae%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e6%a9%9f%e8%83%bd-%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e3%81%a7%e3%81%ae%e4%bd%9c%e6%a5%ad%e3%81%ae%e6%b5%81%e3%82%8c">ブランチでの作業の流れ</a> </li> <li> 3.5 <a href="/book/ja/v2/Git-%e3%81%ae%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e6%a9%9f%e8%83%bd-%e3%83%aa%e3%83%a2%e3%83%bc%e3%83%88%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81">リモートブランチ</a> </li> <li> 3.6 <a href="/book/ja/v2/Git-%e3%81%ae%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e6%a9%9f%e8%83%bd-%e3%83%aa%e3%83%99%e3%83%bc%e3%82%b9">リベース</a> </li> <li> 3.7 <a href="/book/ja/v2/Git-%e3%81%ae%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e6%a9%9f%e8%83%bd-%e3%81%be%e3%81%a8%e3%82%81">まとめ</a> </li> </ol> </li> <li class='chapter'> <h2>4. <a href="/book/ja/v2/Git%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc-%e3%83%97%e3%83%ad%e3%83%88%e3%82%b3%e3%83%ab">Gitサーバー</a></h2> <ol> <li> 4.1 <a href="/book/ja/v2/Git%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc-%e3%83%97%e3%83%ad%e3%83%88%e3%82%b3%e3%83%ab">プロトコル</a> </li> <li> 4.2 <a href="/book/ja/v2/Git%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc-%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e7%94%a8%e3%81%ae-Git-%e3%81%ae%e5%8f%96%e5%be%97">サーバー用の Git の取得</a> </li> <li> 4.3 <a href="/book/ja/v2/Git%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc-SSH-%e5%85%ac%e9%96%8b%e9%8d%b5%e3%81%ae%e4%bd%9c%e6%88%90">SSH 公開鍵の作成</a> </li> <li> 4.4 <a href="/book/ja/v2/Git%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc-%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e3%81%ae%e3%82%bb%e3%83%83%e3%83%88%e3%82%a2%e3%83%83%e3%83%97">サーバーのセットアップ</a> </li> <li> 4.5 <a href="/book/ja/v2/Git%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc-Git-%e3%83%87%e3%83%bc%e3%83%a2%e3%83%b3">Git デーモン</a> </li> <li> 4.6 <a href="/book/ja/v2/Git%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc-Smart-HTTP">Smart HTTP</a> </li> <li> 4.7 <a href="/book/ja/v2/Git%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/ja/v2/Git%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc-GitLab">GitLab</a> </li> <li> 4.9 <a href="/book/ja/v2/Git%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc-%e3%82%b5%e3%83%bc%e3%83%89%e3%83%91%e3%83%bc%e3%83%86%e3%82%a3%e3%81%ab%e3%82%88%e3%82%8b-Git-%e3%83%9b%e3%82%b9%e3%83%86%e3%82%a3%e3%83%b3%e3%82%b0">サードパーティによる Git ホスティング</a> </li> <li> 4.10 <a href="/book/ja/v2/Git%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc-%e3%81%be%e3%81%a8%e3%82%81">まとめ</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/ja/v2/Git-%e3%81%a7%e3%81%ae%e5%88%86%e6%95%a3%e4%bd%9c%e6%a5%ad-%e5%88%86%e6%95%a3%e4%bd%9c%e6%a5%ad%e3%81%ae%e6%b5%81%e3%82%8c">Git での分散作業</a></h2> <ol> <li> 5.1 <a href="/book/ja/v2/Git-%e3%81%a7%e3%81%ae%e5%88%86%e6%95%a3%e4%bd%9c%e6%a5%ad-%e5%88%86%e6%95%a3%e4%bd%9c%e6%a5%ad%e3%81%ae%e6%b5%81%e3%82%8c">分散作業の流れ</a> </li> <li> 5.2 <a href="/book/ja/v2/Git-%e3%81%a7%e3%81%ae%e5%88%86%e6%95%a3%e4%bd%9c%e6%a5%ad-%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%b8%e3%81%ae%e8%b2%a2%e7%8c%ae">プロジェクトへの貢献</a> </li> <li> 5.3 <a href="/book/ja/v2/Git-%e3%81%a7%e3%81%ae%e5%88%86%e6%95%a3%e4%bd%9c%e6%a5%ad-%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%ae%e9%81%8b%e5%96%b6">プロジェクトの運営</a> </li> <li> 5.4 <a href="/book/ja/v2/Git-%e3%81%a7%e3%81%ae%e5%88%86%e6%95%a3%e4%bd%9c%e6%a5%ad-%e3%81%be%e3%81%a8%e3%82%81">まとめ</a> </li> </ol> </li> </ol> </div> <div class='column-middle'> <ol class='book-toc'> <li class='chapter'> <h2>6. <a href="/book/ja/v2/GitHub-%e3%82%a2%e3%82%ab%e3%82%a6%e3%83%b3%e3%83%88%e3%81%ae%e6%ba%96%e5%82%99%e3%81%a8%e8%a8%ad%e5%ae%9a">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/ja/v2/GitHub-%e3%82%a2%e3%82%ab%e3%82%a6%e3%83%b3%e3%83%88%e3%81%ae%e6%ba%96%e5%82%99%e3%81%a8%e8%a8%ad%e5%ae%9a">アカウントの準備と設定</a> </li> <li> 6.2 <a href="/book/ja/v2/GitHub-%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%b8%e3%81%ae%e8%b2%a2%e7%8c%ae" class="active">プロジェクトへの貢献</a> </li> <li> 6.3 <a href="/book/ja/v2/GitHub-%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%ae%e3%83%a1%e3%83%b3%e3%83%86%e3%83%8a%e3%83%b3%e3%82%b9">プロジェクトのメンテナンス</a> </li> <li> 6.4 <a href="/book/ja/v2/GitHub-%e7%b5%84%e7%b9%94%e3%81%ae%e7%ae%a1%e7%90%86">組織の管理</a> </li> <li> 6.5 <a href="/book/ja/v2/GitHub-%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%83%88%e3%81%ab%e3%82%88%e3%82%8b-GitHub-%e3%81%ae%e6%93%8d%e4%bd%9c">スクリプトによる GitHub の操作</a> </li> <li> 6.6 <a href="/book/ja/v2/GitHub-%e3%81%be%e3%81%a8%e3%82%81">まとめ</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-%e3%83%aa%e3%83%93%e3%82%b8%e3%83%a7%e3%83%b3%e3%81%ae%e9%81%b8%e6%8a%9e">Git のさまざまなツール</a></h2> <ol> <li> 7.1 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-%e3%83%aa%e3%83%93%e3%82%b8%e3%83%a7%e3%83%b3%e3%81%ae%e9%81%b8%e6%8a%9e">リビジョンの選択</a> </li> <li> 7.2 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-%e5%af%be%e8%a9%b1%e7%9a%84%e3%81%aa%e3%82%b9%e3%83%86%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0">対話的なステージング</a> </li> <li> 7.3 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-%e4%bd%9c%e6%a5%ad%e3%81%ae%e9%9a%a0%e3%81%97%e3%81%8b%e3%81%9f%e3%81%a8%e6%b6%88%e3%81%97%e3%81%8b%e3%81%9f">作業の隠しかたと消しかた</a> </li> <li> 7.4 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-%e4%bd%9c%e6%a5%ad%e5%86%85%e5%ae%b9%e3%81%b8%e3%81%ae%e7%bd%b2%e5%90%8d">作業内容への署名</a> </li> <li> 7.5 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-%e6%a4%9c%e7%b4%a2">検索</a> </li> <li> 7.6 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-%e6%ad%b4%e5%8f%b2%e3%81%ae%e6%9b%b8%e3%81%8d%e6%8f%9b%e3%81%88">歴史の書き換え</a> </li> <li> 7.7 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-%e3%83%aa%e3%82%bb%e3%83%83%e3%83%88%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e8%a9%b3%e8%aa%ac">リセットコマンド詳説</a> </li> <li> 7.8 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-%e9%ab%98%e5%ba%a6%e3%81%aa%e3%83%9e%e3%83%bc%e3%82%b8%e6%89%8b%e6%b3%95">高度なマージ手法</a> </li> <li> 7.9 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-Rerere">Rerere</a> </li> <li> 7.10 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-Git-%e3%81%ab%e3%82%88%e3%82%8b%e3%83%87%e3%83%90%e3%83%83%e3%82%b0">Git によるデバッグ</a> </li> <li> 7.11 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-%e3%82%b5%e3%83%96%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab">サブモジュール</a> </li> <li> 7.12 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-%e3%83%90%e3%83%b3%e3%83%89%e3%83%ab%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e4%bd%9c%e6%88%90">バンドルファイルの作成</a> </li> <li> 7.13 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-Git-%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%ae%e7%bd%ae%e3%81%8d%e6%8f%9b%e3%81%88">Git オブジェクトの置き換え</a> </li> <li> 7.14 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-%e8%aa%8d%e8%a8%bc%e6%83%85%e5%a0%b1%e3%81%ae%e4%bf%9d%e5%ad%98">認証情報の保存</a> </li> <li> 7.15 <a href="/book/ja/v2/Git-%e3%81%ae%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-%e3%81%be%e3%81%a8%e3%82%81">まとめ</a> </li> </ol> </li> <li class='chapter'> <h2>8. <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">Git のカスタマイズ</a></h2> <ol> <li> 8.1 <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">Git の設定</a> </li> <li> 8.2 <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%e5%b1%9e%e6%80%a7">Git の属性</a> </li> <li> 8.3 <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%83%95%e3%83%83%e3%82%af">Git フック</a> </li> <li> 8.4 <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%83%9d%e3%83%aa%e3%82%b7%e3%83%bc%e3%81%ae%e5%ae%9f%e6%96%bd%e4%be%8b">Git ポリシーの実施例</a> </li> <li> 8.5 <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-%e3%81%be%e3%81%a8%e3%82%81">まとめ</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/ja/v2/Git%e3%81%a8%e3%81%9d%e3%81%ae%e4%bb%96%e3%81%ae%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%ae%e9%80%a3%e6%90%ba-Git-%e3%82%92%e3%82%af%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%b3%e3%83%88%e3%81%a8%e3%81%97%e3%81%a6%e4%bd%bf%e7%94%a8%e3%81%99%e3%82%8b">Gitとその他のシステムの連携</a></h2> <ol> <li> 9.1 <a href="/book/ja/v2/Git%e3%81%a8%e3%81%9d%e3%81%ae%e4%bb%96%e3%81%ae%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%ae%e9%80%a3%e6%90%ba-Git-%e3%82%92%e3%82%af%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%b3%e3%83%88%e3%81%a8%e3%81%97%e3%81%a6%e4%bd%bf%e7%94%a8%e3%81%99%e3%82%8b">Git をクライアントとして使用する</a> </li> <li> 9.2 <a href="/book/ja/v2/Git%e3%81%a8%e3%81%9d%e3%81%ae%e4%bb%96%e3%81%ae%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%ae%e9%80%a3%e6%90%ba-Git-%e3%81%b8%e7%a7%bb%e8%a1%8c%e3%81%99%e3%82%8b">Git へ移行する</a> </li> <li> 9.3 <a href="/book/ja/v2/Git%e3%81%a8%e3%81%9d%e3%81%ae%e4%bb%96%e3%81%ae%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%ae%e9%80%a3%e6%90%ba-%e3%81%be%e3%81%a8%e3%82%81">まとめ</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/ja/v2/Git%e3%81%ae%e5%86%85%e5%81%b4-%e9%85%8d%e7%ae%a1%ef%bc%88Plumbing%ef%bc%89%e3%81%a8%e7%a3%81%e5%99%a8%ef%bc%88Porcelain%ef%bc%89">Gitの内側</a></h2> <ol> <li> 10.1 <a href="/book/ja/v2/Git%e3%81%ae%e5%86%85%e5%81%b4-%e9%85%8d%e7%ae%a1%ef%bc%88Plumbing%ef%bc%89%e3%81%a8%e7%a3%81%e5%99%a8%ef%bc%88Porcelain%ef%bc%89">配管(Plumbing)と磁器(Porcelain)</a> </li> <li> 10.2 <a href="/book/ja/v2/Git%e3%81%ae%e5%86%85%e5%81%b4-Git%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88">Gitオブジェクト</a> </li> <li> 10.3 <a href="/book/ja/v2/Git%e3%81%ae%e5%86%85%e5%81%b4-Git%e3%81%ae%e5%8f%82%e7%85%a7">Gitの参照</a> </li> <li> 10.4 <a href="/book/ja/v2/Git%e3%81%ae%e5%86%85%e5%81%b4-Packfile">Packfile</a> </li> <li> 10.5 <a href="/book/ja/v2/Git%e3%81%ae%e5%86%85%e5%81%b4-Refspec">Refspec</a> </li> <li> 10.6 <a href="/book/ja/v2/Git%e3%81%ae%e5%86%85%e5%81%b4-%e8%bb%a2%e9%80%81%e3%83%97%e3%83%ad%e3%83%88%e3%82%b3%e3%83%ab">転送プロトコル</a> </li> <li> 10.7 <a href="/book/ja/v2/Git%e3%81%ae%e5%86%85%e5%81%b4-%e3%83%a1%e3%83%b3%e3%83%86%e3%83%8a%e3%83%b3%e3%82%b9%e3%81%a8%e3%83%87%e3%83%bc%e3%82%bf%e3%83%aa%e3%82%ab%e3%83%90%e3%83%aa">メンテナンスとデータリカバリ</a> </li> <li> 10.8 <a href="/book/ja/v2/Git%e3%81%ae%e5%86%85%e5%81%b4-%e7%92%b0%e5%a2%83%e5%a4%89%e6%95%b0">環境変数</a> </li> <li> 10.9 <a href="/book/ja/v2/Git%e3%81%ae%e5%86%85%e5%81%b4-%e3%81%be%e3%81%a8%e3%82%81">まとめ</a> </li> </ol> </li> </ol> </div> <div class='column-right'> <ol class='book-toc'> <li class='chapter'> <h2>A1. <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-A:-%e3%81%9d%e3%81%ae%e4%bb%96%e3%81%ae%e7%92%b0%e5%a2%83%e3%81%a7%e3%81%aeGit-%e3%82%b0%e3%83%a9%e3%83%95%e3%82%a3%e3%82%ab%e3%83%ab%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%95%e3%82%a7%e3%83%bc%e3%82%b9">付録 A: その他の環境でのGit</a></h2> <ol> <li> A1.1 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-A:-%e3%81%9d%e3%81%ae%e4%bb%96%e3%81%ae%e7%92%b0%e5%a2%83%e3%81%a7%e3%81%aeGit-%e3%82%b0%e3%83%a9%e3%83%95%e3%82%a3%e3%82%ab%e3%83%ab%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%95%e3%82%a7%e3%83%bc%e3%82%b9">グラフィカルインタフェース</a> </li> <li> A1.2 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-A:-%e3%81%9d%e3%81%ae%e4%bb%96%e3%81%ae%e7%92%b0%e5%a2%83%e3%81%a7%e3%81%aeGit-Visual-Studio%e3%81%a7Git%e3%82%92%e4%bd%bf%e3%81%86">Visual StudioでGitを使う</a> </li> <li> A1.3 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-A:-%e3%81%9d%e3%81%ae%e4%bb%96%e3%81%ae%e7%92%b0%e5%a2%83%e3%81%a7%e3%81%aeGit-Eclipse%e3%81%a7Git%e3%82%92%e4%bd%bf%e3%81%86">EclipseでGitを使う</a> </li> <li> A1.4 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-A:-%e3%81%9d%e3%81%ae%e4%bb%96%e3%81%ae%e7%92%b0%e5%a2%83%e3%81%a7%e3%81%aeGit-Bash%e3%81%a7Git%e3%82%92%e4%bd%bf%e3%81%86">BashでGitを使う</a> </li> <li> A1.5 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-A:-%e3%81%9d%e3%81%ae%e4%bb%96%e3%81%ae%e7%92%b0%e5%a2%83%e3%81%a7%e3%81%aeGit-Zsh%e3%81%a7Git%e3%82%92%e4%bd%bf%e3%81%86">ZshでGitを使う</a> </li> <li> A1.6 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-A:-%e3%81%9d%e3%81%ae%e4%bb%96%e3%81%ae%e7%92%b0%e5%a2%83%e3%81%a7%e3%81%aeGit-Powershell%e3%81%a7Git%e3%82%92%e4%bd%bf%e3%81%86">PowershellでGitを使う</a> </li> <li> A1.7 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-A:-%e3%81%9d%e3%81%ae%e4%bb%96%e3%81%ae%e7%92%b0%e5%a2%83%e3%81%a7%e3%81%aeGit-%e3%81%be%e3%81%a8%e3%82%81">まとめ</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-B:-Git%e3%82%92%e3%81%82%e3%81%aa%e3%81%9f%e3%81%ae%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ab%e7%b5%84%e3%81%bf%e8%be%bc%e3%82%80-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%83%a9%e3%82%a4%e3%83%b3%e3%83%84%e3%83%bc%e3%83%ab%e3%82%92%e4%bd%bf%e3%81%86%e6%96%b9%e6%b3%95">付録 B: Gitをあなたのアプリケーションに組み込む</a></h2> <ol> <li> A2.1 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-B:-Git%e3%82%92%e3%81%82%e3%81%aa%e3%81%9f%e3%81%ae%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ab%e7%b5%84%e3%81%bf%e8%be%bc%e3%82%80-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%83%a9%e3%82%a4%e3%83%b3%e3%83%84%e3%83%bc%e3%83%ab%e3%82%92%e4%bd%bf%e3%81%86%e6%96%b9%e6%b3%95">Gitのコマンドラインツールを使う方法</a> </li> <li> A2.2 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-B:-Git%e3%82%92%e3%81%82%e3%81%aa%e3%81%9f%e3%81%ae%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ab%e7%b5%84%e3%81%bf%e8%be%bc%e3%82%80-Libgit2%e3%82%92%e4%bd%bf%e3%81%86%e6%96%b9%e6%b3%95">Libgit2を使う方法</a> </li> <li> A2.3 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-B:-Git%e3%82%92%e3%81%82%e3%81%aa%e3%81%9f%e3%81%ae%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ab%e7%b5%84%e3%81%bf%e8%be%bc%e3%82%80-JGit">JGit</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e3%82%bb%e3%83%83%e3%83%88%e3%82%a2%e3%83%83%e3%83%97%e3%81%a8%e8%a8%ad%e5%ae%9a">付録 C: Gitのコマンド</a></h2> <ol> <li> A3.1 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e3%82%bb%e3%83%83%e3%83%88%e3%82%a2%e3%83%83%e3%83%97%e3%81%a8%e8%a8%ad%e5%ae%9a">セットアップと設定</a> </li> <li> A3.2 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%ae%e5%8f%96%e5%be%97%e3%81%a8%e4%bd%9c%e6%88%90">プロジェクトの取得と作成</a> </li> <li> A3.3 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e5%9f%ba%e6%9c%ac%e7%9a%84%e3%81%aa%e3%82%b9%e3%83%8a%e3%83%83%e3%83%97%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88">基本的なスナップショット</a> </li> <li> A3.4 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e3%81%a8%e3%83%9e%e3%83%bc%e3%82%b8">ブランチとマージ</a> </li> <li> A3.5 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%ae%e5%85%b1%e6%9c%89%e3%81%a8%e3%82%a2%e3%83%83%e3%83%97%e3%83%87%e3%83%bc%e3%83%88">プロジェクトの共有とアップデート</a> </li> <li> A3.6 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e6%a4%9c%e6%9f%bb%e3%81%a8%e6%af%94%e8%bc%83">検査と比較</a> </li> <li> A3.7 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e3%83%87%e3%83%90%e3%83%83%e3%82%b0">デバッグ</a> </li> <li> A3.8 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e3%83%91%e3%83%83%e3%83%81%e3%81%ae%e9%81%a9%e7%94%a8">パッチの適用</a> </li> <li> A3.9 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e3%83%a1%e3%83%bc%e3%83%ab">メール</a> </li> <li> A3.10 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e5%a4%96%e9%83%a8%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0">外部システム</a> </li> <li> A3.11 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e7%ae%a1%e7%90%86">システム管理</a> </li> <li> A3.12 <a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e9%85%8d%e7%ae%a1%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89">配管コマンド</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>6.2 GitHub - プロジェクトへの貢献</h1> <div> <h2 id="_プロジェクトへの貢献">プロジェクトへの貢献</h2> <div class="paragraph"> <p>これでアカウントが用意できたので、次は、既存のプロジェクトへの貢献にあたって役立つであろうことを説明していきましょう。</p> </div> <div class="sect3"> <h3 id="_プロジェクトのフォーク">プロジェクトのフォーク</h3> <div class="paragraph"> <p></p> </div> <div class="paragraph"> <p>既存のプロジェクトに貢献したいけれども、そのリポジトリにプッシュする権限がないという場合は、プロジェクトを「フォーク」できます。 「フォーク」するとは、GitHub があなた専用にそのプロジェクトのコピーを作るということです。あなた自身の名前空間に置かれるので、そこには自分でプッシュできます。</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">注記</div> </td> <td class="content"> <div class="paragraph"> <p>歴史的に、この「フォーク」という用語はあまり好ましくない意味で使われてきました。 何かのオープンソースプロジェクトの方針を気に入らない人が、別の道を歩み出すこと (そして時には、競合するプロジェクトを作って、貢献者を引き抜いてしまうこと)を指していたのです。 GitHub における「フォーク」とは、単にあなたの配下に作られるコピー以外の何者でもありません。 自分自身による変更を公開の場でそのプロジェクトに適用でき、よりオープンなやりかたでプロジェクトに貢献できるようにするための手段なのです。</p> </div> </td> </tr> </table> </div> <div class="paragraph"> <p>この方式なら、協力してくれる人たちにいちいちプッシュアクセス権を付与していく必要はありません。 それぞれがプロジェクトをフォークして、そこにプッシュして、その変更を元のリポジトリに提供したければ、いわゆる「プルリクエスト」を作ればいいのです。 プルリクエストについては、後ほど説明します。 プルリクエストを作ると、そこにコードレビューのスレッドが立ち上がります。 プロジェクトのオーナーとプルリクエストの作者は、そこで変更についての議論を重ねて、 オーナーが納得した時点で、それをマージすることができます。</p> </div> <div class="paragraph"> <p>プロジェクトをフォークするには、プロジェクトのページに行って、ページ右上にある`‘Fork’'ボタンを押します。</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/forkbutton.png" alt="``Fork'' ボタン"> </div> <div class="title">図 88. “Fork” ボタン</div> </div> <div class="paragraph"> <p>数秒後、新しいプロジェクトのページに自動的に移動します。これは、あなた自身が書き込み可能なコピーです。</p> </div> </div> <div class="sect3"> <h3 id="r_github_flow">GitHub Flow</h3> <div class="paragraph"> <p></p> </div> <div class="paragraph"> <p>GitHub は、プルリクエストを中心としたコラボレーションのワークフローを想定して作られています。 ひとつのリポジトリを共有する密接に連携したチームでの作業であっても、世界中に広がる企業や個人が関わるプロジェクトで何十ものフォークがあるプロジェクトであっても、 このワークフローはうまく機能します。 その中心になるのが、<a href="/book/ja/v2/ch00/ch03-git-branching">[ch03-git-branching]</a> でとりあげた <a href="/book/ja/v2/ch00/r_topic_branch">トピックブランチ</a> のワークフローです。</p> </div> <div class="paragraph"> <p>全体的な流れは、以下のようになります。</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p><code>master</code> からトピックブランチを作る。</p> </li> <li> <p>そこに、プロジェクトの改良につながるコミットをする。</p> </li> <li> <p>このブランチを、自分の GitHub プロジェクトにプッシュする。</p> </li> <li> <p>GitHub 上でプルリクエストを作る。</p> </li> <li> <p>議論を重ね、必要ならさらにコミットをする。</p> </li> <li> <p>プロジェクトのオーナーは、プルリクエストをマージする(あるいは、マージせずに閉じる)。</p> </li> </ol> </div> <div class="paragraph"> <p>これは基本的に、<a href="/book/ja/v2/ch00/r_integration_manager">統合マネージャー型のワークフロー</a> でとりあげる、統合マネージャー型のワークフローです。 しかし、変更についてのやりとりやレビューをメールで行う代わりに、ここでは GitHub のウェブベースのツールを使います。</p> </div> <div class="paragraph"> <p>GitHub で公開しているオープンソースのプロジェクトに対して、このフローを使って変更を提案する例を見ていきましょう。</p> </div> <div class="sect4"> <h4 id="_プルリクエストの作成">プルリクエストの作成</h4> <div class="paragraph"> <p>自分のArduino上で実行するコードを探していたトニーは、GitHub 上にすばらしいプログラムがあることを発見しました。 それが <a href="https://github.com/schacon/blink" class="bare">https://github.com/schacon/blink</a> です。</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/blink-01-start.png" alt="貢献したいプロジェクト"> </div> <div class="title">図 89. 貢献したいプロジェクト</div> </div> <div class="paragraph"> <p>ただ、ひとつ問題がありました。点滅の間隔が速すぎるのです。1 秒おきに状態を切り替えるのではなく、3 秒くらいは間を置きたいものです。 さて、このプログラムを改良して、その変更を提案してみましょう。</p> </div> <div class="paragraph"> <p>まずは、先ほど説明した <em>Fork</em> ボタンをクリックして、このプロジェクトのコピーを手に入れます。 この例で使うユーザー名は “tonychacon” とします。つまり、できあがったコピーは <code>https://github.com/tonychacon/blink</code> となり、ここからはこのプロジェクトを変更していきます。 これをローカルにクローンして、トピックブランチを作り、コードを変更して、その変更を GitHub にプッシュしましょう。</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git clone https://github.com/tonychacon/blink <b class="conum">(1)</b> Cloning into 'blink'... $ cd blink $ git checkout -b slow-blink <b class="conum">(2)</b> Switched to a new branch 'slow-blink' $ sed -i '' 's/1000/3000/' blink.ino <b class="conum">(3)</b> $ git diff --word-diff <b class="conum">(4)</b> diff --git a/blink.ino b/blink.ino index 15b9911..a6cc5a5 100644 --- a/blink.ino +++ b/blink.ino @@ -18,7 +18,7 @@ void setup() { // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) [-delay(1000);-]{+delay(3000);+} // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW [-delay(1000);-]{+delay(3000);+} // wait for a second } $ git commit -a -m 'three seconds is better' <b class="conum">(5)</b> [slow-blink 5ca509d] three seconds is better 1 file changed, 2 insertions(+), 2 deletions(-) $ git push origin slow-blink <b class="conum">(6)</b> Username for 'https://github.com': tonychacon Password for 'https://tonychacon@github.com': Counting objects: 5, done. Delta compression using up to 8 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 340 bytes | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) To https://github.com/tonychacon/blink * [new branch] slow-blink -&gt; slow-blink</code></pre> </div> </div> <div class="colist arabic"> <ol> <li> <p>フォークしたプロジェクトを、ローカルにクローンする</p> </li> <li> <p>わかりやすい名前のトピックブランチを作る</p> </li> <li> <p>コードを変更する</p> </li> <li> <p>問題はなさそうだ</p> </li> <li> <p>この変更をトピックブランチにコミットする</p> </li> <li> <p>新しいトピックブランチを、GitHub 上のフォークに書き戻す</p> </li> </ol> </div> <div class="paragraph"> <p>この状態で GitHub 上のフォークに戻ると、GitHub 上に新しいトピックブランチがプッシュされたことを伝えてくれます。 また、大きな緑色のボタンを使えば、変更点を確認したり、元のプロジェクトへのプルリクエストを送ったりできます。</p> </div> <div class="paragraph"> <p>あるいは、<code>https://github.com/&lt;user&gt;/&lt;project&gt;/branches</code> にある “Branches” ページから自分のトピックブランチに移動して、そこからプルリクエストを送ることもできます。</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/blink-02-pr.png" alt="プルリクエストのボタン"> </div> <div class="title">図 90. プルリクエストのボタン</div> </div> <div class="paragraph"> <p></p> </div> <div class="paragraph"> <p>この緑のボタンをクリックすると、プルリクエストのタイトルと説明を入力する画面に遷移します。 ちゃんと時間をかけて説明を書きましょう。損はしないはずです。プルリクエストを受ける側のプロジェクトオーナーからすれば、説明文がよければあなたの意図が汲み取りやすくなるからです。そうすれば、オーナーはプルリクエストの内容を正確に評価できますし、それを取り込むことがプロジェクトにとってプラスかどうかを判断できるでしょう。</p> </div> <div class="paragraph"> <p>この画面では、トピックブランチ内のコミットのうち、`master`よりも先行しているコミットの一覧 (今回の場合はひとつだけ) も確認できます。 また、このブランチをオーナーがマージしたときに適用される変更の、unified形式の差分も表示されます。</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/blink-03-pull-request-open.png" alt="プルリクエストの作成"> </div> <div class="title">図 91. プルリクエストの作成ページ</div> </div> <div class="paragraph"> <p>この画面で <em>Create pull request</em> ボタンを押すと、フォーク元のプロジェクトのオーナーに、 誰かが変更を提案しているという通知が届きます。この通知には、変更に関するすべての情報が記載されたページへのリンクが含まれています。</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">注記</div> </td> <td class="content"> <div class="paragraph"> <p>一般にプルリクエストは、こういった公開プロジェクトに対する変更を、その準備が整った時点で提案するために作るものです。 しかし、内部的なプロジェクトの開発サイクルにおいて、 <em>開発を始めるタイミングで</em> プルリクエストを作ることもよくあります。 プルリクエストを作った*後でも*、そのトピックブランチへのプッシュを続けることができます。 最後の最後にプルリクエストを行うのではなく、早い時点でプルリクエストを作っておけば、 その後の作業状況をチーム内で共有できます。</p> </div> </td> </tr> </table> </div> </div> <div class="sect4"> <h4 id="_プルリクエストの繰り返し">プルリクエストの繰り返し</h4> <div class="paragraph"> <p>これで、元のプロジェクトのオーナーは、変更の提案を見られるようになりました。それをマージしたり、却下したり、コメントしたりすることができます。 ここでは、オーナーが変更提案を気に入ったものの、ライトが消えている時間を点灯している時間よりも少しだけ長くしたほうがいいと感じたことにしましょう。</p> </div> <div class="paragraph"> <p><a href="/book/ja/v2/ch00/ch05-distributed-git">[ch05-distributed-git]</a> のワークフローなら、この手のやりとりはメールで行うところですが、GitHub の場合はこれをオンラインで行います。 プロジェクトのオーナーはunfied diffをレビューして、コメントを残します。コメントしたい行をクリックすれば、コメントを残せます。</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/blink-04-pr-comment.png" alt="PRの行コメント"> </div> <div class="title">図 92. プルリクエストのコードの特定の行へのコメント</div> </div> <div class="paragraph"> <p>メンテナがコメントを入れると、プルリクエストの作者 (そして、そのリポジトリをウォッチしているすべての人たち) に、通知が届きます。 通知をカスタマイズする方法については後述しますが、メールでの通知を受け取るように設定している場合は、以下のようなメールも届きます。</p> </div> <div id="r_email_notification" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/blink-04-email.png" alt="メールでの通知"> </div> <div class="title">図 93. 通知メールで送られたコメント</div> </div> <div class="paragraph"> <p>オーナーだけでなく誰でも、プルリクエスト全体に対するコメントができます。 <a href="/book/ja/v2/ch00/r_pr_discussion">プルリクエストのディスカッションページ</a> では、プロジェクトのオーナーがコードの特定の行についてコメントしたうえで、さらにプルリクエスト全体に関するコメントも残しています。 また、コードへのコメントが、一連の会話に組み込まれていることにもお気づきでしょう。</p> </div> <div id="r_pr_discussion" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/blink-05-general-comment.png" alt="PRのディスカッションページ"> </div> <div class="title">図 94. プルリクエストのディスカッションページ</div> </div> <div class="paragraph"> <p>プルリクエストの作者は、自分の変更を受け入れてもらうために何が必要なのかがわかりました。 幸運にも、そんなに手間のかかることではありません。 メールでのやりとりの場合は、一連の作業をやり直した上でもう一度メーリングリストに投稿する必要がありますが、 GitHub なら、単にトピックブランチにコミットしてそれをプッシュするだけで済みます。 また、<a href="/book/ja/v2/ch00/r_pr_final">プルリクエストの最終形</a> にあるように、更新されたプルリクエストでは変更前のコードへのコメント表示が省略されています。追加されたコミットによって変更されたコードへのコメントだからです。</p> </div> <div class="paragraph"> <p>なお、既存のプルリクエストにコミットを追加しても、通知は送られません。そこで、修正をプッシュしたトニーは、修正が終わったことをコメントでプロジェクトオーナーに伝えることにしました。</p> </div> <div id="r_pr_final" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/blink-06-final.png" alt="PRの最終形"> </div> <div class="title">図 95. プルリクエストの最終形</div> </div> <div class="paragraph"> <p>このプルリクエストのページで “Files Changed” タブをクリックすると、“unified” 形式の diff を確認できます。 つまり、このトピックブランチをマージしたときにどんな変更が施されるのかを、まとめて確認できるのです。 <code>git diff</code> の用語に直すと、このタブを開いたときに表示される内容は、プルリクエストの対象になっているブランチ上で <code>git diff master...&lt;branch&gt;</code> を実行した結果になります。 この形式の diff についての詳細は、<a href="/book/ja/v2/ch00/r_what_is_introduced">何が変わるのかの把握</a> を参照ください。</p> </div> <div class="paragraph"> <p>もうひとつお気づきのことがあることでしょう。 GitHub は、このプルリクエストが問題なくマージできることを確認したうえで、サーバー上でマージを実行するためのボタンを表示します。 このボタンが表示されるのは、あなたがこのリポジトリへの書き込みアクセス権限を持っていて、かつ問題なくマージ可能な場合だけです。 このボタンをクリックすると、GitHub は “non-fast-forward” なマージを行います。 つまり、仮に fast-forward 可能なマージであったとしても、明示的にマージコミットを作ります。</p> </div> <div class="paragraph"> <p>お望みなら、このブランチを取得した上で、ローカルでマージすることもできます。 このブランチを <code>master</code> にマージしてから GitHub にプッシュすると、このプルリクエストは自動的に閉じられます。</p> </div> <div class="paragraph"> <p>これが、大半の GitHub プロジェクトが使っている基本的なワークフローです。 トピックブランチを作り、そこからプルリクエストを作って、議論を重ね、必要に応じてさらに作業を重ねて、最終的にそのリクエストをマージするか、あるいはマージせずに終了します。</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">注記</div> </td> <td class="content"> <div class="title">フォークしなくてもかまわない</div> <div class="paragraph"> <p>同じリポジトリのふたつのブランチ間でのプルリクエストもできるということを知っておきましょう。 誰かと一緒に何らかのフィーチャーの作業をしていて、両方ともそのプロジェクトへの書き込み権限を持っている場合なら、 トピックブランチをそのリポジトリにプッシュした上で、同じプロジェクトの <code>master</code> ブランチへのプルリクエストを作ることができます。 そこで、コードのレビューや議論を進めればいいでしょう。 このときに、わざわざフォークする必要はありません。</p> </div> </td> </tr> </table> </div> </div> </div> <div class="sect3"> <h3 id="_プルリクエストの応用テクニック">プルリクエストの応用テクニック</h3> <div class="paragraph"> <p>GitHub のプロジェクトに貢献する際の基本がわかったところで、 プルリクエストに関するちょっとしたヒントやテクニックを紹介しましょう。これらを使えば、プルリクエストをさらに活用できるでしょう。</p> </div> <div class="sect4"> <h4 id="_パッチとしてのプルリクエスト">パッチとしてのプルリクエスト</h4> <div class="paragraph"> <p>実際のところ、多くのプロジェクトは、プルリクエストを完璧なパッチ群である (つまり、きちんと順序どおりに適用しなければいけない) とは考えていません。 これは、メーリングリストベースで運営するプロジェクトで一般的な考えかたとは異なります。 GitHub のプロジェクトでは、プルリクエストのブランチを変更提案に関する議論の場と捕らえていることが多く、 最終的にできあがった unified diff をマージするのだと考えています。</p> </div> <div class="paragraph"> <p>この違いを認識しておくことが大切です。一般に、変更を提案するのは、コードが完璧に仕上がる前の段階です。 一方、メーリングリストベースの運営では、まだできあがってもいないパッチを投稿することなど、まずないでしょう。 未完成の段階で変更を提案することで、メンテナとの議論を早めに始めることができます。 コミュニティの協力で、より適切なソリューションにたどり着けるようになるでしょう。 プルリクエストで提案したコードに対してメンテナやコミュニティから変更の提案があったときに、 パッチをゼロから作り直す必要はありません。 差分だけを、新たなコミットとしてプッシュすればいいのです。 その後の議論は、これまでの経緯を踏まえた上で進みます。</p> </div> <div class="paragraph"> <p><a href="/book/ja/v2/ch00/r_pr_final">プルリクエストの最終形</a> をもう一度見てみましょう。プルリクエストの作者は、自分のコミットをリベースして新たなプルリクエストを作ったわけではありません。 単に、新しいコミットを追加して、それを既存のブランチにプッシュしただけです。 そのおかげで、今後このプルリクエストのページを見直すことがあったときにも、最終的な決定に至るまでの経緯を簡単に確認できるのです。 “Merge” ボタンを押したときに、本来不要な場面でも意図的にマージコミットを作っているのは、 後からそのプルリクエストを参照しやすいようにするためです。 必要に応じて、それまでの流れをすぐに調べることができます。</p> </div> </div> <div class="sect4"> <h4 id="_上流への追従">上流への追従</h4> <div class="paragraph"> <p>プルリクエストを作った後で元のプロジェクトに変更が加わったなどの理由で、プルリクエストがそのままではマージできなくなることがあります。 そんな場合は、そのプルリクエストを修正して、メンテナがマージしやすいようにしておきたいことでしょう。 GitHub は、そのままでマージできるかどうかをチェックして、すべてのプルリクエストのページの最下部に結果を表示します。</p> </div> <div id="r_pr_fail" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/pr-01-fail.png" alt="マージできないPR"> </div> <div class="title">図 96. そのままではマージできないプルリクエスト</div> </div> <div class="paragraph"> <p><a href="/book/ja/v2/ch00/r_pr_fail">そのままではマージできないプルリクエスト</a> のようになっていたら、自分のブランチを修正して、この表示がグリーンになるようにしたいところです。 そうすれば、メンテナに余計な手間をかけさせずに済みます。</p> </div> <div class="paragraph"> <p>グリーンにするための主な選択肢は、二種類あります。 ひとつは、自分のブランチを、プルリクエストの対象ブランチ (普通は、フォーク元のリポジトリの <code>master</code>) の先端にリベースすること。 もうひとつは、その対象ブランチを自分のブランチにマージすることです。</p> </div> <div class="paragraph"> <p>GitHub 上の開発者の多くは、後者を選んでいるようです。その理由は、先述したとおりです。 重要なのは、そこにいたるまでの歴史と、最終的にマージしたという事実だと考えているのでしょう。 リベースをすると、歴史がすっきりするという以外の利点はありません。そして、リベースはマージに比べて <strong>ずっと</strong> 難しいし、間違いを起こしやすいものです。</p> </div> <div class="paragraph"> <p>対象ブランチをマージして、自分のプルリクエストをそのまま取り込んでもらえるようにする手順は、次のとおりです。 まず、オリジナルのリポジトリを新しいリモートとして追加して、それをフェッチします。 そして、そのリポジトリのメインブランチを自分のトピックブランチにマージします。 何か問題があれば修正し、その結果をプルリクエストと同じブランチにプッシュします。</p> </div> <div class="paragraph"> <p>先ほどの “tonychacon” の例に戻りましょう。プルリクエストを出した後にオリジナルの作者がリポジトリに変更を加えたため、 プルリクエストがそのままでは取り込めなくなってしまいました。そんな場合の手順は、以下のとおりです。</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git remote add upstream https://github.com/schacon/blink <b class="conum">(1)</b> $ git fetch upstream <b class="conum">(2)</b> remote: Counting objects: 3, done. remote: Compressing objects: 100% (3/3), done. Unpacking objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0) From https://github.com/schacon/blink * [new branch] master -&gt; upstream/master $ git merge upstream/master <b class="conum">(3)</b> Auto-merging blink.ino CONFLICT (content): Merge conflict in blink.ino Automatic merge failed; fix conflicts and then commit the result. $ vim blink.ino <b class="conum">(4)</b> $ git add blink.ino $ git commit [slow-blink 3c8d735] Merge remote-tracking branch 'upstream/master' \ into slower-blink $ git push origin slow-blink <b class="conum">(5)</b> Counting objects: 6, done. Delta compression using up to 8 threads. Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 682 bytes | 0 bytes/s, done. Total 6 (delta 2), reused 0 (delta 0) To https://github.com/tonychacon/blink ef4725c..3c8d735 slower-blink -&gt; slow-blink</code></pre> </div> </div> <div class="colist arabic"> <ol> <li> <p>オリジナルのリポジトリを “upstream” という名前のリモートとして追加する</p> </li> <li> <p>そのリモートの、最新の状態をフェッチする</p> </li> <li> <p>メインブランチを、自分のトピックブランチにマージする</p> </li> <li> <p>衝突を解決する</p> </li> <li> <p>同じトピックブランチに、再びプッシュする</p> </li> </ol> </div> <div class="paragraph"> <p>これでプルリクエストが自動的に更新されて、マージ可能かどうかが再びチェックされます。</p> </div> <div id="r_pr_merge_fix" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/pr-02-merge-fix.png" alt="修正後のPR"> </div> <div class="title">図 97. そのままマージできるようになったプルリクエスト</div> </div> <div class="paragraph"> <p>Git のすばらしいところのひとつが、これらの作業を継続的に行えるということです。 長期にわたるプロジェクトでも、対象ブランチからのマージを何度でも繰り返せるので、前回のマージ以降に発生した衝突さえ気をつけていれば、混乱なく作業を続けられます。</p> </div> <div class="paragraph"> <p>ブランチをリベースしてすっきりさせたい場合は、そうしてもかまいません。 しかし、既に作成済みのプルリクエストに対して、それを強制的にプッシュするのは避けたほうがいいでしょう。 もし他の人がそれを手元に取得して何かの作業を進めると、<a href="/book/ja/v2/ch00/r_rebase_peril">ほんとうは怖いリベース</a> で説明したような問題が発生します。 リベースした場合は、それを GitHub 上で新しいブランチにして、新しいプルリクエストを作るようにしましょう。 新しいプルリクエストから元のプルリクエストを参照して、そして元のプルリクエストは閉じてしまいます。</p> </div> </div> <div class="sect4"> <h4 id="_参照">参照</h4> <div class="paragraph"> <p>…と言われて気になるのは、「元のプルリクエストをどうやって参照すればいいの?」ということでしょう。 GitHub 上で他のものを参照するにはいろんな方法があって、GitHub 上で何かを書ける場所ならほぼどこでも他のものを参照できます。</p> </div> <div class="paragraph"> <p>まずは、別のプルリクエストあるいは Issue を相互参照する方法から紹介します。 プルリクエストや Issue には番号が振られていて、この番号はプロジェクト内で一意になっています。 つまり、たとえばプルリクエスト#3とIssue #3が <em>両方とも</em> 存在することはありえないのです。 他のプルリクエストや Issue を参照したい場合は、コメントや説明文の中で単に <code>#&lt;num&gt;</code> と書くだけでかまいません。 あるいは、もう少し細かく、誰か他の人が作った Issue やプルリクエストを指定することもできます。 <code>username#&lt;num&gt;</code> と書けば、今いるリポジトリの別のフォーク上での Issue やプルリクエストを参照できるし、 <code>username/repo#&lt;num&gt;</code> と書けば、別のリポジトリ上のものも参照できます。</p> </div> <div class="paragraph"> <p>実例を見てみましょう。 先ほど説明したとおり、リベースをした上で新しいプルリクエストを作ったものとします。新しいプルリクエストから、古いプルリクエストを参照したいところです。 また、そのリポジトリのフォーク上にある Issue や、まったく別のプロジェクトにある Issue も参照するつもりです。 説明文は、<a href="/book/ja/v2/ch00/r_pr_references">プルリクエスト内での相互参照</a> のようになります。</p> </div> <div id="r_pr_references" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/mentions-01-syntax.png" alt="PRの参照"> </div> <div class="title">図 98. プルリクエスト内での相互参照</div> </div> <div class="paragraph"> <p>このプルリクエストを投稿すると、画面上では <a href="/book/ja/v2/ch00/r_pr_references_render">プルリクエスト内での相互参照のレンダリング</a> のような表示になります。</p> </div> <div id="r_pr_references_render" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/mentions-02-render.png" alt="PR内での参照のレンダリング"> </div> <div class="title">図 99. プルリクエスト内での相互参照のレンダリング</div> </div> <div class="paragraph"> <p>GitHub の完全な URL を入力したところも、画面上では短縮されて、必要な情報だけが見えていることがわかるでしょう。</p> </div> <div class="paragraph"> <p>トニーが元のプルリクエストを閉じると、そのことが新しいプルリクエストのほうにも表示されることがわかります。 GitHub が、プルリクエストのタイムラインに自動的にトラックバックを送ったのです。 これで、古いプルリクエストを見にきたすべての人は、そのリクエストの後継となる新しいプルリクエストにたどり着けるようになるのです。 リンクは、<a href="/book/ja/v2/ch00/r_pr_closed">プルリクエスト内での相互参照のレンダリング</a> のように表示されます。</p> </div> <div id="r_pr_closed" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/mentions-03-closed.png" alt="閉じられたPR"> </div> <div class="title">図 100. プルリクエスト内での相互参照のレンダリング</div> </div> <div class="paragraph"> <p>issue の番号だけでなく、SHA-1 を示して特定のコミットを参照することもできます。 SHA-1 を指定する際には 40 文字ぶんすべてを示す必要がありますが、コメントの中に SHA-1 を発見すると、GitHub はそれを当該コミットへリンクしてくれます。 他のフォークやその他のリポジトリのコミットを参照する場合の方法は、issue の場合と同じです。</p> </div> </div> </div> <div class="sect3"> <h3 id="_markdown">Markdown</h3> <div class="paragraph"> <p>他の Issue へのリンクは、GitHub のテキストボックスでできるさまざまなことのうちの、ほんの始まりに過ぎません。 Issue やプルリクエストの説明、それに対するコメント、コードに対するコメントなどなどでは、いわゆる “GitHub Flavored Markdown” を使うことができます。 Markdown はプレーンテキストと似ていますが、よりリッチなレンダリングを行います。</p> </div> <div class="paragraph"> <p>コメントや説明文を、Markdown を使って書いた例を <a href="/book/ja/v2/ch00/r_example_markdown">Markdown での記述例と、そのレンダリング結果</a> に示します。</p> </div> <div id="r_example_markdown" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/markdown-01-example.png" alt="Markdown の例"> </div> <div class="title">図 101. Markdown での記述例と、そのレンダリング結果</div> </div> <div class="sect4"> <h4 id="_github_flavored_markdown">GitHub Flavored Markdown</h4> <div class="paragraph"> <p>GitHub Flavored Markdownは、基本的なMarkdownの文法に、GitHub 流の味付けをしたものです。 プルリクエストや Issue を作ったり、それにコメントしたりするときに、役立つことでしょう。</p> </div> <div class="sect5"> <h6 id="_タスクリスト">タスクリスト</h6> <div class="paragraph"> <p>GitHub 流の Markdown で追加された便利な機能の中で、最初に紹介する機能が、タスクリストです。これは、プルリクエストで特に便利です。 タスクリストとは、チェックボックス付きの、やることリストです。 これを Issue やプルリクエストで使うと、完了させるまでに何を済ませなければいけないのかを表せます。</p> </div> <div class="paragraph"> <p>タスクリストの作りかたは、以下のとおりです。</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-text" data-lang="text">- [X] Write the code - [ ] Write all the tests - [ ] Document the code</code></pre> </div> </div> <div class="paragraph"> <p>プルリクエストや Issue の説明文にこのように書いておくと、<a href="/book/ja/v2/ch00/r_task_lists">Markdown でのコメント内に表示されたタスクリスト</a> のような表示になります。</p> </div> <div id="r_task_lists" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/markdown-02-tasks.png" alt="タスクリストの例"> </div> <div class="title">図 102. Markdown でのコメント内に表示されたタスクリスト</div> </div> <div class="paragraph"> <p>これはたとえば、プルリクエストに対して、「これだけのことを済ませればマージの準備が整う」ということを示すために使うことがあります。 この機能のすばらしいところは、単にチェックボックスをクリックするだけで、コメントが更新できるということです。 タスクが完了したときに、わざわざ Markdown を直接編集する必要はありません。</p> </div> <div class="paragraph"> <p>さらに、GitHub は、Issue やプルリクエストの中にあるタスクリストを見つけて、そのメタデータを一覧ページにも表示してくれます。 たとえば、あるプルリクエストの中でタスクを作ったときに、プルリクエストの一覧ページを見ると、タスクがどの程度完了しているのかを確認できるのです。 これは、プルリクエストをサブタスクに切り分けたり、他のひとたちがそのブランチの進捗を追いかけたりする際にも役立ちます。 この機能の実例を <a href="/book/ja/v2/ch00/r_task_list_progress">プルリクエスト一覧における、タスク一覧の概要表示</a> に示します。</p> </div> <div id="r_task_list_progress" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/markdown-03-task-summary.png" alt="タスクリストの例"> </div> <div class="title">図 103. プルリクエスト一覧における、タスク一覧の概要表示</div> </div> <div class="paragraph"> <p>この機能は、 トピックブランチを作ったばかりのときにプルリクエストを出して、その後の実装の進捗をプルリクエスト上で追いかけていくような場合に、とても便利です。</p> </div> </div> <div class="sect5"> <h6 id="_コードスニペット">コードスニペット</h6> <div class="paragraph"> <p>コメントに、コードスニペットを追加することもできます。 これは、これから <em>やろうとしている</em> ことを、実際に実装する前に表明したりするときに便利です。 また、うまく動かないサンプルコードや、このプルリクエストで実装できることを説明するサンプルコードなどを示すときにも使われます。</p> </div> <div class="paragraph"> <p>コードスニペットを追加するには、バッククォートで「囲む」必要があります。</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-text" data-lang="text">```java for(int i=0 ; i &lt; 5 ; i++) { System.out.println("i is : " + i); } ```</code></pre> </div> </div> <div class="paragraph"> <p>このサンプルでの <em>java</em> のように言語名を追加すると、GitHub はスニペットのシンタックスハイライトを行います。 このサンプルは、最終的に <a href="/book/ja/v2/ch00/r_md_code">サンプルコードをレンダリングした結果</a> のような表示になります。</p> </div> <div id="r_md_code" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/markdown-04-fenced-code.png" alt="レンダリングされたコード"> </div> <div class="title">図 104. サンプルコードをレンダリングした結果</div> </div> </div> <div class="sect5"> <h6 id="_引用">引用</h6> <div class="paragraph"> <p>長いコメントの一部に返信するときは、その部分を引用することができます。引用するには、各行の先頭に <code>&gt;</code> を付け加えます。 これはとても便利で、よく使われるものなので、キーボードショートカットも用意されています。 コメントの中で返信したい部分を選択して <code>r</code> キーを押すと、選択した部分を引用した、新しいコメント入力欄が現れます。</p> </div> <div class="paragraph"> <p>引用は、このような感じになります。</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-text" data-lang="text">&gt; Whether 'tis Nobler in the mind to suffer &gt; The Slings and Arrows of outrageous Fortune, How big are these slings and in particular, these arrows?</code></pre> </div> </div> <div class="paragraph"> <p>このコメントが、画面上では <a href="/book/ja/v2/ch00/r_md_quote">引用のレンダリングの例</a> のようにレンダリングされます。</p> </div> <div id="r_md_quote" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/markdown-05-quote.png" alt="引用のレンダリング"> </div> <div class="title">図 105. 引用のレンダリングの例</div> </div> </div> <div class="sect5"> <h6 id="_絵文字">絵文字</h6> <div class="paragraph"> <p>最後に紹介するのが絵文字です。コメントの中で、絵文字を使えます。 実際に、GitHub の Issue やプルリクエストの多くで、絵文字が使われています。 GitHub には、絵文字の入力支援機能もあるのです。 コメントの記入中に <code>:</code> を入力すると、オートコンプリート機能が立ち上がって、絵文字を探すのを手伝ってくれます。</p> </div> <div id="r_md_emoji_auto" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/markdown-06-emoji-complete.png" alt="絵文字のオートコンプリート"> </div> <div class="title">図 106. 絵文字のオートコンプリートの例</div> </div> <div class="paragraph"> <p>絵文字は <code>:&lt;name&gt;:</code> 形式で表し、コメント内のどこでも使えます。 たとえば、このように書いたとしましょう。</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-text" data-lang="text">I :eyes: that :bug: and I :cold_sweat:. :trophy: for :microscope: it. :+1: and :sparkles: on this :ship:, it's :fire::poop:! :clap::tada::panda_face:</code></pre> </div> </div> <div class="paragraph"> <p>これをレンダリングした結果は、<a href="/book/ja/v2/ch00/r_md_emoji">絵文字だらけのコメント</a> のようになります。</p> </div> <div id="r_md_emoji" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/markdown-07-emoji.png" alt="絵文字"> </div> <div class="title">図 107. 絵文字だらけのコメント</div> </div> <div class="paragraph"> <p>めちゃめちゃ便利というほどのものではありませんが、 楽しさや熱意を伝える手段としては他の追随を許さないものでしょう。</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">注記</div> </td> <td class="content"> <div class="paragraph"> <p>最近は、絵文字を使えるウェブサービスも多くなってきました。 自分の言いたいことをうまく伝えられる絵文字を見つけるための、チートシートも公開されています。</p> </div> <div class="paragraph"> <p><a href="http://www.emoji-cheat-sheet.com" class="bare">http://www.emoji-cheat-sheet.com</a></p> </div> </td> </tr> </table> </div> </div> <div class="sect5"> <h6 id="_画像">画像</h6> <div class="paragraph"> <p>厳密に言うと GitHub Flavored Markdown とは関係ありませんが、これはとても便利な機能です。 Markdown でのコメントに画像のリンクを追加するのは、画像を探したり URL を埋め込んだりと面倒くさいものです。 しかし GitHub では、テキストエリアに画像をドラッグ&ドロップするだけで、それを埋め込めるのです。</p> </div> <div id="r_md_drag" class="imageblock"> <div class="content"> <img src="/book/ja/v2/images/markdown-08-drag-drop.png" alt="画像のドラッグ&ドロップ"> </div> <div class="title">図 108. ドラッグ&ドロップで画像をアップロードして、自動的に埋め込む</div> </div> <div class="paragraph"> <p><a href="/book/ja/v2/ch00/r_pr_references">プルリクエスト内での相互参照</a> に戻ると、テキストエリアの上に小さく “Parsed as Markdown” とヒントが書かれていることがわかります。 これをクリックすると、GitHub 上での Markdown でできるすべてのことをまとめた、チートシートを見ることができます。</p> </div> </div> </div> </div> <div id="nav"><a href="/book/ja/v2/GitHub-アカウントの準備と設定">prev</a> | <a href="/book/ja/v2/GitHub-プロジェクトのメンテナンス">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>

Pages: 1 2 3 4 5 6 7 8 9 10