gitでたまにゲシュタルト崩壊するのでその時々の個人的メモ
ローカルブランチと追跡ブランチ
- ローカルで作成したブランチは、pushすることで追跡ブランチにも反映される。これは、pushしたらリモートブランチにマージされ、その後それを追跡ブランチにfetchしている。
- つまり、gitのset-upstreamは追跡ブランチではなくリモートブランチを上流に設定している。
HEADについて
- gitのHEADは現在いるブランチにおける最新コミット。
- detached HEADとはこのHEAD、と自分がチェックアウトしたコミット(現段階にとっての最新コミット)が一致しない状態。これを解決するには、
# 元のHEADにチェックアウトする
# ブランチにチェックアウトするとそのブランチの最新コミットにチェックアウトすることになるため
$ git checkout (CurrentBranchName)
# または、新しいブランチを切り、そのブランチに切り替える
# つまり「HEAD = 今いるブランチの最新コミット = 現在チェックアウトしているコミット」になる
$ git checkout -b new_branch_name
もし新しいブランチを切らずに過去のコミットまで戻りたい時には
# どちらか
$ git reset --hard (CommitLog)
$ git reset --soft (CommitLog)
ブランチをRebase vs. Merge
- rebase+merge(ff)にするとログが見やすいが、修正がきつくなる
- mergeにするとgithubに表示されるログは時系列ごちゃ混ぜになる(やばい)が、修正がやりやすくなる
こわくないgitがものすごくわかりやすいのでハマったら読む。
色々取り消す
# addしたfileをunstageする
$ git reset HEAD filename
# 特定のファイルの内容をHEADまで戻す
$ git checkout -- filename