横田紋奈、宇賀神みずき『いちばんやさしいGit&GitHubの教本』読書メモ

横田紋奈、宇賀神みずき『いちばんやさしいGit&GitHubの教本』の読書メモ

Chapter1 Gitの基本を学ぼう

・コミット……利用者が任意のタイミングで変更を記録する
リポジトリ……コミットの保管庫
ローカルリポジトリ……パソコンのローカル内に作る自分専用のリポジトリ
リモートリポジトリ……ネットワークのサーバー内に作って、共同で使う
・ワークツリー(作業ディレクトリ)……変更するファイルを保持する場所
ステージングエリア……コミットするファイルを登録する場所
Gitディレクトリ……コミットを格納する場所

Chapter2 Gitを使う準備をしよう
// 設定
git config --global 設定項目名 設定値
// 設定の一覧の確認
git config --list
// 特定の設定値を確認
git config 設定項目名

・Gitクライアント……ローカルリポジトリの作成、コミット、リモートリポジトリへのコミットなどの操作を実行する
Gitサーバー……リモートリポジトリを管理する
・git configで設定の変更

Chapter3 ファイルをバージョン管理してみよう
// ローカルリポジトリの作成
git init

// ステージングエリアに登録
git add ファイル名 // 指定したファイルを
git add ディレクトリ名 // 指定したディレクトリ配下のすべてのファイルを
git add . //カレントディレクトリ配下のすべてのファイルを

// コミット
git commit
git commit -m "コメント" // 1行のコミット時コメント

// 現在の状態確認
git status

// 差分確認
git diff // 現在のワークツリーと、登録したステージングエリアのファイルを比較
git diff --cached //ステージングエリアとGitディレクトリを比較

// ワークツリーのファイルを、ステージングエリアのファイルの状態に戻す
git checkout -- ファイル名

// ステージングエリアへの登録を取り消す
git reset どのコミットか ファイル名

// ファイルの削除
git rm ファイル名
git rm -r ディレクトリ名 // 指定したディレクトリ内のファイル・ディレクトリをすべて削除

// コミット履歴の確認
git log

・.gitignoreファイルで無視したいファイル・フォルダを指定すると、Gitで管理されなくなる
・コミット時のメッセージは、1行目は変更内容の要約、3行目から詳細な説明がおすすめ
・git checkoutで取り消せない場合……ファイルの新規作成時とファイル名変更時

Chapter4 GitHubリポジトリをパソコンに取得しよう
// リモートリポジトリをローカルリポジトリとしてクローン
git clone リモートリポジトリのURL

GitHub……Gitのリポジトリを作成してソースコードホスティングしてくれるWebサービス
GitHubへの接続方法にはHttpsSSHがあり、SSHだといちいちユーザー名・パスワード入力しなくていい
・フォーク……別GitHubアカウントのリモートリポジトリを複製して、自分のGitHubアカウントにリモートリポジトリを複製すること
・クローン……リモートリポジトリをローカルリポジトリとして複製すること

Chapter5 ブランチを使ってファイルを更新しよう
// ブランチの作成
git branch ブランチ名

// 指定したブランチに切り替える
git checkout 切り替え先のブランチ名

// プッシュ
git push プッシュ先のリモートリポジトリの名前 ブランチ名

// プル
git pull プル元のリモートリポジトリの名前 プルするブランチの名前
// フェッチ
git fetch フェッチ元のリモートリポジトリの名前

// 状態確認
git branch // ブランチの状態を確認
git status // ブランチの状態も含め諸々を確認
git diff ブランチ名 // 現在のブランチを、指定したブランチとdiff

・ブランチ……Gitで記録する履歴を枝分かれさせる機能
同時に別々の機能を実装したい場合、本番環境とテスト環境をわけたい場合などに使える
短期的に使う作業用のブランチは「トピックブランチ」と呼ぶ
・masterブランチ……Gitリポジトリを作成すると自動で作られる
そのGitプロジェクトの中心となるバージョンを管理することが多い
・作業人数に関係なく、「作業の意味」ごとにブランチを作ることを推奨
・プッシュ……ローカルリポジトリからリモートリポジトリに変更を反映する
・プルリクエスト……作成したブランチの取り込みを依頼する
GitHubで行う プルリクエストのレビューなどもGitHub上で行える
プルリク先のリポジトリ・ブランチと、取り込んでもらいたいブランチを指定する
・マージ……ブランチを統合すること
「Create a merge commit」→トピックブランチのコミットを単純にすべてマージする
「Squash and merge」→トピックブランチで追加されたコミットすべてを、1つのコミットとしてまとめてマージする
「Rebase and merge」→ブランチの枝分かれ元を変更してからマージを行うことで、ベースブランチのコミット履歴が枝分かれしなくなる
・プル……指定したリモートリポジトリの内容がローカルリポジトリに取り込まれ、ワークツリーにまで反映される
・フェッチ……指定したリモートリポジトリの内容がローカルリポジトリに取り込まれるが、ワークツリーにまでは反映されない
ワークツリーに反映させるためにはプルかマージが必要
リモートリポジトリにしかないブランチをワークツリーに反映させたい場合、直接プルができないので、フェッチ→チェックアウトを行う
GitHubフロー……作業ごとにトピックブランチを1つだけ作り、細かい単位でサイクルを回す
作業の影響範囲を限定できる
参考:https://guides.github.com/introduction/flow/

Chapter6 複数ブランチを同時に使ってファイルを更新しよう
// 新しいブランチを作成して、そのブランチに切り替える
git checkout -b 新しいブランチ名

// 変更したファイルをまとめてステージングエリアに追加する
git add -A
Chapter7 コンフリクトに対処しよう

・コンフリクト……マージする2つのブランチが、それぞれ同じファイルの同じ箇所に異なる変更を加えていた場合に発生
Gitはマージの仕方を判断できないので、人間がマージ後の正しい姿を判断して手動でマージを行う

Chapter8 GitHubをさらに使いこなそう

GitHubを利用して、オープンソースソフトウェアを使ったり、自分で修正してプルリクエストを送ったりできる