いつやるの?Git入門 from Frontrend on Vimeo.
もくじ
Git使用のコツ
常にフェッチしてマージしていれば、常に最新にして自分の環境とのずれをなくしておけばコミットしやすい
Gitで一番気をつける
- merge
- rebase
push, fetchだけがリモートへのコマンド
ほとんどの操作がローカルで完結
fetch + merge/rebase
コミット内容を後から編集することが可能
書籍
Git GUIでのイメージ学習が出来る
https://k.swd.cc/learnGitBranching-ja/
構成
中央集権型
一番多い
subversionに近い
統合マネージャ型
Githubでモジュールなど作る時はこれが多い
若頭独裁者型 ※普通はやらない
カーネルの開発方式
3つのデータ領域
- 作業ディレクトリ(ワークツリー)
- ステージング・エリア(インデックス)
- Gitディレクトリ
git init
- 作業ディレクトリ
- ステージングエリア
- Gitディレクトリ
上記が作成される
git add file1 dir1/file2
ステージングエリアにステージされる
git add .
作業ディレクトリ内のすべてのファイルをステージさせる
git commit -m ‘メッセージ’
ステージングエリアの内容をGitディレクトリに反映される
コミットツリー
commitした時に、前のcommitが親となり、どんどんツリーが出来ていく
削除する時
git rm dir1/file2
ステージングエリア上のファイル情報を削除する
git commit -m ‘削除情報をコミット’
削除した更新内容をGitディレクトリに登録
ファイルを移動させる時
git mv ファイル名
git addした直後にさっきのステージングエリアの情報をgit addをやめたい
git reset HEAD dir1/file3
ステージングエリアがなかったことになる
作業ディレクトリのファイルをステージングエリアの状態に戻したい
git checkout — dir1/file3
作業ディレクトリのdir/file3をステージングエリアの状態に戻したい、変更前の状態に戻したい。
その他の基本コマンド
git reset –<mode> <commit>
mode
- soft
- hard
- mixed
データ領域を指定commitの状態に戻す
例
git reset –hard HEAD^
HEADのひとつ前のcommitの状態に戻る、
作業ディレクトリとステージングエリアが戻ります。
作業ディレクトリの状態を見る
git status
コミットログを見る
git log –graph –color
GUIでツリーの構成を見る
gitk
ブランチ
Git管理を開始するとmasterブランチがデフォルトで用意される
commitするとmasterの位置も移動する。
developブランチを切った場合も、同じcommitを指す
git branch -a
mergeかrebaseか
プロジェクトによって異なる。
少しcommitしたローカル環境
ステージングエリアはGitディレクトリのHEADとの差分で更新を判断
HEAD
現在作業中のブランチを表わす
developブランチを作る
git branch develop
ブランチを切り替える = HEADの位置がmasterから指定ブランチに切り替え
git checkout develop
HEADの位置がdevelopに切り変わる、HEADに合わせて復元
作業ディレクトリもステージングエリアも切り替えたbranch = HEADの位置に合わせて、ファイルが復元されます。
developをmasterにmergeさせる
EのdevelopをDのmasterに反映させてFとなる。
DとEはFの親となる
その後もdevelopを発展させてHにしたものも、masterのFにcommitして、Gを作成することが出来ます。
git merge develop
rebase
ローカルGitでの変更 merge
masterにHEADがあり、developを取り込みたい。
この状態でgit merge developを行います。
前のmasterだったBと、developのCが取り込まれています = merge commitされたDが作られる。
作業ディレクトリとステージングエリアにもCが反映されます。
ローカルGitでの変更 rebase
git cloneの動き
リモートリポジトリの変更履歴を含めた完全な複製がローカルに出来ます。