何度でもやる git 教室
$git init
git init って何か?
ファイル名の末尾にに付けとかつけるのもバージョン管理の一種です
ls -lA .git
git は .git ディレクトリのなかにデータがあるみたいな感じになってる
.git のなかにあるものはなんなのか?
オブジェクトがある
自分自身が何者かという ID をもってる
あと親の ID をもってる
あとファイルの中身をもってる
ファイルの中身は圧縮されてる
touch foo
git add foo
git commit -m “add foo”
git log
commit 43df3466558a2fbd626957aab70f9db4f8fc3b45
Author: shikakun <*@***.jp>
Date: Thu Oct 31 17:09:11 2013 +0900
add foo
rm -r でディレクトリ消せる
コミットするとは何か?
git オブジェクトをつくるということ
SHA1
オブジェクトがないと履歴がたどれない
vim foo
foo とかかく
:wq
git add foo
git commit -m “foooo”
git log
commit 198a0eeaff4b58bf892c6ea26e24fcbc58f7fe7f
Author: shikakun <*@***.jp>
Date: Thu Oct 31 17:17:29 2013 +0900
add foo content
commit 43df3466558a2fbd626957aab70f9db4f8fc3b45
Author: shikakun <*@***.jp>
Date: Thu Oct 31 17:09:11 2013 +0900
add foo
新しくできたオブジェクトは親の情報をもってる
前に実行されたコミットの番号を覚えてる
git log
上から最新
git show 198a0eeaff4b58bf892c6ea26e24fcbc58f7fe7f
オブジェクトの中身を詳しく見ることができる
git には remote の概念がある
git remote -v
オブジェクトの数珠つなぎ
リポジトリといいます
push とは?
数珠つなぎの中身を remote にコピーすること
仕事のプロジェクトのやつを見てみよう
***l:~/dev//develop/*** (master)
$ git remote -v
origin git@***:/.git (fetch)
origin git@:/***.git (push)
origin って名前は慣習的なもの
git remote -v
でどこにぶちこもうとしてるのか確認できる
ブランチ
git はブランチが強力
git branch で一覧
master って名前も慣習的なもの
git branch -a でリモートのブランチが一覧ででる!
便利
git checkout -b bar
でブランチ作成
git checkout master
で master ブランチへ移動
git log するとさっきブランチでコミットしたやつがない!
git log --graph
merge とは何か?
ブランチをがっしゃんこすること
コンフリクトとは
git が何を信じたらいいかわからなくなったこと
人間が直すしかない
HEAD とは先頭のこと
<<<<<<<< HEAD
先頭のこと
branch
ブランチの先頭のこと
1 <<<<<<< HEAD
2 foo-content (master)
3 =======
4 foo-content (!!! branch !!!)
5 >>>>>>> branch
git fetch
pull ってかいたけど fetch のことです
fetch とは
人間が .git の中身がどうなってるかはわからないんだけど
fetch するととりあえず中身を .git にもってくることができる
自分の .git の HEAD の場所はかわってない!
git merge origin/master
で手元の .git の中身につながって HEAD の場所がかわる!
git rebease
リモートのオブジェクトの変更を時系列に並べられる!!
git pull —-rebase
git pull と rebase を同時にできる!!