Edited at

「しまった!」の時、ほしいGit対策 &通常運用_メモ

More than 3 years have passed since last update.

何回も発生して、やり方確認することを時間かかるから、メモしておきます!

今後も追加し続けます~


間違った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 の違いって? (かわいい絵が!)