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]の部分はコミット名でもいける