Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
23
Help us understand the problem. What is going on with this article?
@MeganLiu

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

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

23
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
23
Help us understand the problem. What is going on with this article?