書籍概要

ポケットリファレンス

【改訂新版】Gitポケットリファレンス

著者
発売日
更新日

概要

Gitを活用するためのバイブルとして読み継がれてきた「Gitポケットリファレンス」改訂新版が登場! 現場でGitを活用するための必携書として,「Gitコマンドのリファレンスと共に,エラーメッセージが出たときのトラブルシューティングも解説」というコンセプトはそのままに,GitリポジトリとSlackの連携や,GitBucket,GitLab,SourceTreeの紹介など,最新のチーム開発に対応!これからGitを利用する方に対しては導入部分から優しく解説し,Gitをすでに習熟している方に向けては最新動向をキャッチアップした懇切丁寧な書籍です!

こんな方におすすめ

  • Git を使い始めたが,初歩的な使い方しかしていない開発者
  • Git ユーザ

目次

Chapter 1 まずはGitを使ってみよう

Git のインストール

  • Windows へのGit のインストール
  • Mac へのGit のインストール
  • Git の初期設定

はじめてのGit

  • Git の概要
  • ローカルリポジトリの作成
  • 編集内容をローカルリポジトリへ登録
  • 共有リポジトリとの同期
  • 共有リポジトリ上の更新の取り込み

ブランチとマージ

  • ブランチの作成とマージ
  • fast-forwardマージ
  • 複数コミットを1つにまとめるマージ
  • リベース

ブランチのプラクティス

  • 短期的に使用するブランチ
  • 機能ブランチ
  • トピックブランチ
  • 長期的に使用するブランチ
  • メンテナンスブランチ

Chapter 2 Gitリファレンス55

  • Git の設定を表示・変更する..................................................git config
  • Gitリポジトリを初期化する .....................................................git init
  • リポジトリを複製する ........................................................... git clone
  • インデックスの内容を,リポジトリにコミットする ....................git commit
  • インデックスに変更内容を登録する ...........................................git add
  • ファイルをバージョン管理から外す ............................................. git rm
  • ファイルの名前を変更・移動する ............................................... git mv
  • 作業ツリー内のファイルの状態を表示する ...............................git status
  • ファイルの変更やコミットをリセットする ................................. git reset
  • コミットの内容を取り消すコミットを作成する ..........................git revert
  • バージョン管理外のファイルを削除する ................................... git clean
  • リモートリポジトリの変更を取得して取り込む ............................ git pull
  • リモートリポジトリの変更を取得する ...................................... git fetch
  • 共有リポジトリに変更を送信する ............................................. git push
  • リモートリポジトリを設定する ..............................................git remote
  • 直接通信できないリポジトリと同期をとる ...............................git bundle
  • ブランチを操作する ............................................................git branch
  • 作業ツリーを切り替える ................................................... git checkout
  • コミットにタグを設定する ........................................................git tag
  • 複数の作業ツリーを作成する ............................................. git worktree
  • 配布用のアーカイブファイルを作成する ................................ git archive
  • 一番最近のタグからのコミット情報を表示する ...................... git describe
  • ブランチの状態を把握する ............................................git show-branch
  • 他のブランチの変更内容をマージする ..................................... git merge
  • 外部ツールを使って競合を解決する ...................................git mergetool
  • コミット履歴を変更する .......................................................git rebase
  • 他のブランチのコミットを取り込む .................................git cherry-pick
  • ブランチの履歴を表示する .......................................................git log
  • コミットや作業ツリーとの差分を表示する ................................. git diff
  • コミットの差分・ファイルの内容を表示する .............................. git show
  • ファイルの各行の変更履歴を確認する ..................................... git blame
  • リポジトリの操作履歴を確認する ...........................................git reflog
  • リポジトリを検索する ............................................................ git grep
  • コミットに注釈を付ける ........................................................ git notes
  • メール送信可能な形式のパッチファイルを作成する .......... git format-patch
  • パッチを作業ツリーに適用する............................................... git apply
  • メール形式のパッチからコミットを作成する ................................. git am
  • ヘルプでコマンドを調べる ..................................................... git help
  • 作業を一時的に保存する ....................................................... git stash
  • インデックスの内容を操作する .................................... git update-index
  • リポジトリで外部リポジトリを参照する ..............................git submodule
  • 外部リポジトリを取り込む・外部リポジトリへ分割する ................. git subtree
  • Subversion のリポジトリをGit で操作する ..................................git svn
  • Gitリポジトリを最適化する ....................................................... git gc
  • Gitリポジトリを検査する ....................................................... git fsck
  • バグが混入したコミットを特定する ........................................git bisect
  • Chapter 3 活用編311

    共有リポジトリの構築

    • GitHubでの共有リポジトリの構築
    • GitLabでの共有リポジトリの構築
    • GitBucket での共有リポジトリの構築

    プルリクエストベースの開発

    • プルリクエストベースの開発の特徴
    • プルリクエストの流れ
    • リポジトリの同期とリベース
    • 簡易なプルリクエストの運用

    フックでコミットやプッシュの前後に処理をはさみ込む

    • コミットに関するもの
    • プッシュに関するもの
    • その他
    • フックスクリプトの注意点

    リポジトリの更新内容をメールで共有する

    • 準備
    • 送信メッセージの例
    • トラブルシュート

    Slack へコミットログを送信

    • Incoming WebHooks のURLの取得
    • Gitリポジトリの設定

    GUI や統合開発環境でGit を利用する

    Microsoft OfficeやPDFファイルの差分を見る

    • Windows 環境での手順(git-xlsx-textconv を利用)
    • Mac,Linux 環境での手順(Apache Tikaを利用)

    Column

  • Xcodeアップデート後にGit コマンドが実行できない
  • シェル(Bash)の補完で入力の手間を省く
  • 無視ファイルの設定
  • ローカルリポジトリから共有リポジトリを作成する
  • リベースとマージの違い
  • プルとフェッチ
  • マージの競合の解決
  • トピックブランチの定義
  • Daily Build
  • core.autocrlf 設定
  • エディタで設定編集
  • alias の登録
  • 設定値の設定場所の確認
  • サイト単位のhttp設定の実施
  • .git ディレクトリの内容
  • shallow(浅い)リポジトリ
  • コミットの修正
  • Author とCommitter の違い
  • 空ディレクトリの登録
  • 古いバージョンのgit addコマンドの挙動
  • git rmで誤ってファイルを削除した
  • ファイルを作業ツリーに残したままバージョン管理の対象外にする
  • リポジトリからファイルを完全削除する
  • git reset とgit rmの違い
  • git reset --hard自体を取り消したい
  • .gitignoreでファイルをGit の対象外にする
  • .gitignoreでGit の対象外にしているファイルを削除する
  • git reset --hardとの関係
  • 上流ブランチの設定
  • ローカルブランチ,リモートブランチ,リモート追跡ブランチ
  • リモートリポジトリのURL
  • コミットの範囲による増分の指定
  • 共有リポジトリ上のブランチとタグの削除の防止
  • detached HEAD
  • タグ名のルール
  • もともとの作業ツリーと作成した作業ツリーの違い
  • 作業ツリーをどこに作成すべきか
  • アーカイブ作成用の設定(.gitattributesファイル)
  • core.autocrlf がtrueの環境でのarchiveには要注意
  • 設定が不要な外部ツール
  • GUI 外部ツールの例(P4Merge)
  • バックアップファイル(*.orig)を作成しない
  • 過去のコミットのコミットメッセージを修正する
  • コミットのAuthor やメールアドレスを一括で書き換える
  • コンセプトガイドの内容
  • rebase.autoStash設定
  • サブモジュール名とサブモジュール配置先パス
  • サブモジュールで取り込むブランチの指定
  • git submodule foreachの挙動の変更
  • サブモジュールとサブツリーの使い分け
  • 履歴表示で外部リポジトリのブランチを表示しない
  • ブランチ分離の際の--rejoin オプションの挙動
  • 操作ミスで参照できなくなってしまったコミットを復旧する
  • danglingオブジェクトとunreachableオブジェクト
  • --lost-foundの指定の有無により生じるdanglingオブジェクトの差
  • 問題の有無をbisect に伝えるスクリプトの作成方法
  • 途中で指示を間違えた場合の探索の再実行
  • リポジトリ間でのフックスクリプトの共有
  • Mac 環境でのファイル名の濁音・半濁音文字の扱い
  • Tika でメタデータでの差分表示
  • Git での差分表示の拡張
    • 逆引き索引
    • 索引

    サポート

    正誤表

    本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

    (2017年9月25日最終更新)

    P.61 設定名「push.recurseSubmodules」

    check:親リポジトリのプッシュ時にサブモジュールの変更がプッシュされていない場合、サブモジュールの変更を自動でプッシュする
    on-demand:親リポジトリのプッシュ時にサブモジュールの変更がプッシュされていない場合、親リポジトリのプッシュを中止する(デフォルト)
    check:親リポジトリのプッシュ時にサブモジュールの変更がプッシュされていない場合、親リポジトリのプッシュを中止する(デフォルト)
    on-demand:親リポジトリのプッシュ時にサブモジュールの変更がプッシュされていない場合、サブモジュールの変更を自動でプッシュする

    商品一覧