git memo4

コミットの取り消し法

「git commit --amend」と「git reset」がある

git commit --amend

直前のコミットを無効にし、新たなコミットを作る(コミットをやり直す)
git add してからamendを行う

git reset

コミット自体を取り消す
「git reset --soft」 → ワークディレクトリの内容はそのままでコミットだけを取り消す
「git reset --hard」 → コミット取り消した上でワークディレクトリの内容も書き換える

push したコミットを取り消す

ローカルのコミット取消後、「git push -f origin HEAD^:branch-name」
追記
取り消しはこわいので↓の方がよい
Git - リモートにプッシュしたコミットを取り消す - Qiita

rebaseとmergeの違い

git rebase

ブランチの派生元を変更する

git merge

現在の作業ブランチに別のブランチで行われた変更点を取り込むコマンド

git pull --rebaseとgit rebaseの違いは?

git pull --rebaseはgit fetch で他のレポジトリから変更を取得したあとgit rebaseしてる。
git rebaseだけだと、現在のローカルブランチ(fetchしてないので最新版でない)にrebaseするだけになる

コンフリクト対応

git rebase --continue

rebase でもマージと同じように、コンフリクトが発生する可能性がある
コンフリクトが発生した場合、コンフリクトを解消してからgit commitの代わりにgit rebase --continue
を実行することで、rebase を続けることができる

git rebase --skip

競合を解決した結果、一つ前のコミットとの違いがなくなった場合、そのコミットをスキップする

git rebase --abort

git rebase 実行前の状態に戻る

マージを取り消す

git ref log
git reset --hard ORIG_HEAD

他のブランチからあるディレクトリ内のファイルだけもってきたいとき

git co {branch] {パス}

{branch]の部分はコミット名でもいける

追加してないファイルも含めて作業ツリーをきれいにする