Learn Git Branching Note
総覧のよいまとめ
git add についての良いまとめ
git reset についての良いまとめ
git show HEAD~ で「現在のブランチの先頭の一つ前のコミット内容が見られる」
cherry-pick は複数の引数をとることができる
git cherry-pick A; git cherry-pick B; git cherry-pick C は git cherry-pick A B C と書くことができるHEAD を動かす方法は checkout
ポインタを動かす方法は git branch -f BRANCH_NAME COMMIT_HASH
rebase は merge に似た概念
merge はブランチを明確に残す
rebase はブランチを残さない((消すわけではなく不可視になる))git rebase には引数の取り方(省略の仕方)がいくつかある
git rebase ブランチ名 の場合
git rebase 併合先のブランチ名 (併合元のブランチ名)git rebase 相手先のブランチ名 併合元のブランチ名
git rebase した後は「併合したブランチの先頭に、併合元ブランチの HEAD が来る」
checkout と branch -f
HEAD の移動は checkout
HEAD^2
^ の場合で後ろに数字が付く場合は「マージコミットからどの親を選択するかを指定」する^ の後ろの数字は「親の生成順」になり、例えば HEAD^1 の場合は最初の親になるHEAD~3
~ の後ろの数字が省略された場合は ~1 と同義^ と ~ は連結が可能
HEAD~^3~2branch -f master commit_hash が一つの方法
git branch -f master HEAD~3
branch コマンドであることに注意するgit rebase 移動先のブランチ名 が一つの方法
git rebase development
rebase なので、意図しない結果を招くことがある((と思う))reset と revert
HEAD や HEAD^ や HEAD~3reset の引数は、「戻る場所(コミット)が HEAD からどこにあるか」を指すrevert の引数は、「どのコミットを打ち消すかを HEAD からの相対位置で」指す((おそらくコミットハッシュを示しても指定可能だと思う))現在 development ブランチにいて git rebase master を実行した場合
master ブランチの先頭に development ブランチがくっつく
development ブランチが先行するmaster ブランチは development ブランチより遅れている
master ブランチを追いつかせるためには、カレントのブランチを master にしてから以下のコマンドを実行するgit rebase development
amend
amend は git commit のオプションであり、git commit --amend のように用いる
revert のように新しいコミットが生産されるということはないgit commit --amend と実行するとエディタが開いてコミットメッセージを含め、直前のコミット内容を変更する--no-edit オプションをつけることでエディタが開かなくなり、コミットメッセージはそのままで、変更内容が併合されるtag
git tag タグ名称 コミット名
HEAD が対象になるcheckout することができるdescribe
tag の親戚git describe ブランチ名 として実行する
<タグ>_<コミット数>_g<ハッシュ>
ver1_3_gfoobarver1 という名称で、そのコミットから見て先頭のコミットは 3コミット 進んでいて、先頭のコミットのハッシュは foobar であるということgit bisect というコマンドもあるらしい((初めて聞いた))git branch コマンドでブランチを作成する際に、第二引数の値でそのブランチのポインタを指定できる
git branch bugWork master^^2^
bugWork というブランチを作るbugWork ブランチのポインタは、「master ブランチの HEAD の1つ前のコミット→2つ目の親コミット→1つ前のコミット」になる-f オプションは?
git fetch はすべてのブランチを fetch する
git pull
git pull は git fetch + git merge のことgit pull --rebase は git fetch + git rebase のことgit checkout -b totallyNotMaster o/master
これはtotallyNotMasterという名前のブランチを新しく作り、o/masterへの追跡プロパティを設定します。
- 二番目の方法
ブランチのリモートトラッキングを設定するもう一つの方法は、単にgit branch -uオプションを使うというものです。例えば以下のようにです
git branch -u o/master foo
これは、fooブランチをo/masterを追跡するように設定します。もし、fooが現在チェックアウトしているブランチだった場合、以下のように省略することができます:
git branch -u o/master
reset の HARD と SOFT と mixedblamegrephttps://github.com/pcottle/learnGitBranching
src/levels/*/*.js