Git
ドキュメント読み
Git - バージョン管理に関して
1.使い始める
1.1
チェックアウト:VCSから作業ディレクトリにファイルやディレクトリをコピーすること。VCSの中がホテル。
1.3 Gitの基本
Gitが格納するのは、差分ではない。ミニ・ファイルシステムのスナップショットの集合。一度にすべてのファイルの状態を記録する。変更のないファイルも、まるごと。
効率化のため、ファイルに変更がない場合は、すでに格納している同一ファイルへのリンクを格納する。
Gitのすべてのものは、格納される前にチェックサムが取られる。なんで、Gitに見つからずに変更するのは無理。チェックサムの機構はSHA-1ハッシュという。24b9da6552252987aa493b52f8696cd6d3b00373みたいな。
.git directory = Repository
Staging Areaは、次に何をコミットするかに関する情報が蓄えられている一つのファイル。どっかにある。インデックスとも呼ばれる。
1.4 コマンドライン
コマンドライン使えればGUIもわかる。でも、逆も真なり、とは言えない。いいね。
1.6 最初のGitの構成
configファイルは3つある。上書きされる順から、ProgramData内、USER内、リポジトリ内。linuxならetc/gitconfigが一番にくる。
code: (powershell)
git config --list # 見つけられるすべての設定の一覧。同じ項目は最後の値が使われる
git config user.name # 使われてる設定値確認
2.Git の基本
2.2 変更内容のリポジトリへの記録
git add にはいろんな意味合いがあり、新しいファイルの追跡開始・ファイルのステージング・マージ時に衝突が発生したファイルに対する「解決済み」マーク付けなどで使用します。
git diffは変更されたけどステージされてないものを表示。git diff --stagedは次のコミットで取り込まれる変更を表示。
2.4 作業のやり直し
git commitしたあとに追加し忘れてたのあったらgit addしたあとにgit commit --amend。これは単にコメントを書き直したいときにも使える。
unstageしたかったりdiscardしたいときのコマンド、このテキストの時と今の違うな。
2.5 リモートでの作業
git fetchで変更をリモートから引き出す。マージされないので、必要に応じて自分でマージする必要がある。
git pullはマージもやる
3.Git のブランチ機能
3.1 ブランチとは
最初のcommitの親はいない
git commitを実行すると、Gitリポジトリにはcommit、tree, blob(ファイル数の数だけ)オブジェクトが作られる。commitはtreeの情報とか親とか作者とかメンバ。
Gitにおけるブランチとは、commitをさす軽量なポインタに過ぎない。
https://scrapbox.io/files/6249577d9eea54001f6a55d3.png
上でmasterはただのポインタ。HEADは今作業してるブランチをさす。git branchは新たにブランチを作成するだけで、HEADはそのまま。新たに作成したブランチは、この図だとf30abをさす。masterと同じものをさす。
3.2 ブランチとマージの基本
高度なマージには専用の使う。
3.5 リモートブランチ
git pullは使わない。git fetchしてからgit merge
3.6 リベース
分岐を減らす方法は、三方向のマージ、fast forwardのマージ、リベース、ontoリベースの4つくらいある。
リベースはまだ公開していないcommitを整理するとき以外使わない。公開リポジトリにあるのをリベースしてはならない。もししちゃったら手間。
4.Gitサーバー
4.1 プロトコル
GitHubはホスティングサービス
HTTPに関する理解が必要だと最近非常に思う。あとポートとか。linuxの勉強に費やそうかしら。この研究の時間を。
5.Git での分散作業
5.1 分散作業の流れ
5.2 プロジェクトへの貢献
5.3 プロジェクトの運営
5.4 まとめ
6.GitHub
6.1 アカウントの準備と設定
6.2 プロジェクトへの貢献
6.3 プロジェクトのメンテナンス
6.4 組織の管理
6.5 スクリプトによる GitHub の操作
6.6 まとめ
7.Git のさまざまなツール
7.1 リビジョンの選択
7.2 対話的なステージング
7.3 作業の隠しかたと消しかた
7.4 作業内容への署名
7.5 検索
7.6 歴史の書き換え
7.7 リセットコマンド詳説
7.8 高度なマージ手法
7.9 Rerere
7.10 Git によるデバッグ
7.11 サブモジュール
7.12 バンドルファイルの作成
7.13 Git オブジェクトの置き換え
7.14 認証情報の保存
httpの認証情報をキャッシュする仕組みがある。毎回ユーザーとパスワードは面倒なので。
デフォルトでは、何もキャッシュされない
cacheモードにすると、15分メモリに保存される
storeはディスクに保存。暗号化されない。
Windows使っているなら、wincredという補助ツールをつかえる。Windows Credential Storeで保存できる。
どのモードかは、credential.helperの値で決まる。
確認したいのならば、git credential fillと売って、protocol=httpsやhost=mygithostとやると保存情報があれば見れる。詳しくはドキュメントに。
7.15 まとめ
8.Git のカスタマイズ
8.1 Git の設定
8.2 Git の属性
8.3 Git フック
8.4 Git ポリシーの実施例
8.5 まとめ
9.Gitとその他のシステムの連携
9.1 Git をクライアントとして使用する
9.2 Git へ移行する
9.3 まとめ
Gitの内側
10.1 配管(Plumbing)と磁器(Porcelain)
Gitの実態はcontent-addressable filesystem
配管(Plumbing)と磁器(Porcelain)
低レベルを扱うコマンドはPlumbing(配管)こまんど。
ユーザーフレンドリーなのはporcelain(陶器)コマンド
10.2 Gitオブジェクト
10.3 Gitの参照
10.4 Packfile
10.5 Refspec
10.6 転送プロトコル
10.7 メンテナンスとデータリカバリ
10.8 環境変数
10.9 まとめ
A1. Appendix A: その他の環境でのGit
A1.1 グラフィカルインタフェース
A1.2 Visual StudioでGitを使う
A1.3 EclipseでGitを使う
A1.4 BashでGitを使う
A1.5 ZshでGitを使う
A1.6 PowershellでGitを使う
A1.7 まとめ
A2. Appendix B: Gitをあなたのアプリケーションに組み込む
A2.1 Gitのコマンドラインツールを使う方法
A2.2 Libgit2を使う方法
A2.3 JGit
A3. Appendix C: Gitのコマンド
A3.1 セットアップと設定
A3.2 プロジェクトの取得と作成
A3.3 基本的なスナップショット
A3.4 ブランチとマージ
A3.5 プロジェクトの共有とアップデート
A3.6 検査と比較
A3.7 デバッグ
A3.8 パッチの適用
A3.9 メール
A3.10 外部システム
A3.11 システム管理
A3.12 配管コマンド