プログラマーのツール 〜 Git
プログラマーなら是非とも使いこなせるようにしておきたいツールの話し。
Git
バージョン管理ツールとか構成管理ツールなどと呼ばれるツールの代表格。他に、Subversion(SVN)やMercurialなどもあるが、どれか一つと言えばGit。Gitは親しみやすくはないけど、コンセプト/機能設計が素晴らしく、それを理解するだけでもプログラマーとして成長できる。
基本的にはターミナルから使う。GUI版なら、TortoiseGit(Windowsのみ?)やSourceTreeなどがある。
基本的な理解
- コミットとは何か
- リポジトリ、ステージ(インデックス)、作業ディレクトリ
- ブランチ、チェックアウトとは何か
- マージ、競合とは何か
- ff(Fast Forward)とは何か
- 分散リポジトリとは何か
- リモートとローカル
- プッシュとフェッチ
- リモート追跡ブランチ
- アップストリームブランチ
使いこなし
- .gitディレクトリの中を理解する
- HEADファイル
- configファイル
- branchesディレクトリ
- objectsディレクトリ
- 変更の一部(hunk)のみコミット
- 変更の破棄
- アメンド(コミットの訂正)
- スタッシュ
- スクオッシュ(squash merge)
- リベース、インタラクティブリベース
- チェリーピック
- ブレイム(blame)
- refspecとは何か
- 特定のコミットの特定のファイルのみ取り出す
- エイリアスを登録する
- manpageを読めるようになる
- なぜ、プッシュした後でリベースしたりアメンドしてはならないのか?
- ブランチ管理フロー
- Gitフロー
- GitHubフロー
私の場合
残念ながら職場ではSVNなので、Gitは私用オンリーです。白状すると、プルリクエストしたことはありませぬ。