何回も発生して、やり方確認することを時間かかるから、メモしておきます!
今後も追加し続けます~
間違ったCommitした
commitしたくないファイルは、addしちゃったとか、コミットを取り消したい...
git resetの方法を使います。その中で、2種類があります。
--soft → コミットだけを取り消す。ワークディレクトリの内容は変更しない。
--hard → コミット取り消した上でワークディレクトリの内容も変更される。
1.まずcommitのログを見る
$ git log
2.直前のコミットを取り消す
$ git reset --soft HEAD^
$ git reset --hard HEAD^
commitのハッシュ値を指定することもできる。
※その他
・直前のコミット内容を修正する
$ git commit --amend
##間違ったブランチで開発しちゃった
急いで修正入りたいから、Fix用のブランチを切り忘れました時...
1.現在の作業を一時的に退避する
$ git stash save
退避した作業の一覧を表示して確認する
$ git stash list
$ git status
"nothing to commit (working directory clean)" を表示すれば、退避OK。
2.正しいBranchを(新規作成)切り替える
$ git checkout -b ほしいブランチ
3.退避した作業を復元する
$ git stash pop
stash@{1} のように引数を指定すれば、特定の作業を復元することができる。
引数を指定しなければ、退避した作業の中で最新の作業を復元する。
そして、普通のcommit、push作業をする。
※もう要らない退避した作業を削除する
$ git stash drop
stash@{1} のように引数を指定すれば、特定の作業を削除することができる。
引数を指定しなければ、退避した作業の中で最新の作業を削除する。
・退避した作業を全て削除する
$ git stash clear
##間違ったPushした
1.commitのログを見る
$ git log
2.git revert で取り消したいコミット番号を指定する
$ git revert コミットID
3.revertの結果をpushする
$ push origin ブランチ名
pushすると、コミット内容を取り消すことは、リモートのgit上にも反映します。
##修正箇所が競合でマージできない
ブランチ間の差分をマージ(競合でマージできない場合)
1.ブランチ間のファイル差分を確認 (例:現在のブランチとdevelopブランチの差分確認)
$ git diff develop
※ブランチaaaとbbbの差分の確認
$ git diff aaa bbb
2.他のブランチで変更の内容を今のブランチに反映する場合。
例)今いる"feature1"ブランチに、developブランチの変更を反映したい場合
$ git checkout feature1 //まず反映したいブランチに移動
$ git merge develop //develpの変更内容がfeauter1に反映
参考:
git diffでブランチ間のファイル差分を確認するあれこれ
別のブランチの修正を取り込む
##ブランチの整理
・ローカルのブランチ一覧を表示
$ git branch
--remoteのオプションを追加すると、リモートのブランチを一覧表示する。
・ローカル&リモート 両方のブランチ一覧を表示
$ git branch --all
・マージされた、ローカルにあるブランチを削除する
$ git branch -d ブランチ名
※マージしたかどうかを問わずに削除する -Dのオプションを利用。
・Remoteで既に削除されたブランチを、ローカルにも消します。
$ git fetch --prune
・ (リモートのブランチを削除したいとき、Pushでやる)
##他の基本運用(ボケのとき参考用)
git pull
リモートのコピーをローカルに取ってくる
$ git fetch
リモートのコピーからマージ
$ git merge origin/ブランチ名
(git pull = git fetch + git merge )
更新されたリモートのソースを、ローカルに持ってきて、マージする
$ git pull origin ブランチ名
$ git pull origin ”リモートブランチ名:ローカルブランチ名”って、
ローカルにマージするブランチを指定できます。
git push
ローカルブランチをリモートに反映する
$ git push origin ブランチ名
参考情報:
サルでもわかるGit入門
git pull と git pull –rebase の違いって? (かわいい絵が!)