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~2
branch -f master commit_hash
が一つの方法
git branch -f master HEAD~3
branch
コマンドであることに注意するgit rebase 移動先のブランチ名
が一つの方法
git rebase development
rebase
なので、意図しない結果を招くことがある((と思う))reset
と revert
HEAD
や HEAD^
や HEAD~3
reset
の引数は、「戻る場所(コミット)が 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_gfoobar
ver1
という名称で、そのコミットから見て先頭のコミットは 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
と mixed
blame
grep
https://github.com/pcottle/learnGitBranching
src/levels/*/*.js