2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

チーム開発を通して分かった、git addやcommit, pushの他にもよく使うGitコマンド

Last updated at Posted at 2020-07-23

はじめに

個人で開発をしている時は、正直 git addgit commit , git push くらいしか使っていなかったのですが、Gitの研修やチーム開発を通してGitに関して様々なことを学びました。そこで、Gitを用いてチーム開発を行うときに、「これは知っておきたかったなー」というものをまとめてみました

流れとしては master ブランチから develop ブランチを切り、そこから feature/・・・ という感じで作業ブランチを切り、そこで作業を行なっていきます。

🤔 「他のメンバーがプルリクを出したから、手元で確認してレビューしたい...」


自分が feature/fix_top_page_view ブランチで作業をしているときに、他のメンバーから feature/fix_edit_page_view ブランチで変更を行なってプルリクを出したからレビューしてほしいと依頼が来た時

1. 一旦は自分のブランチで修正を行なった分をコミット

$ git add hoge.md
$ git commit

コミットできるものは、この段階でコミットしておく

2. stashを使ってその他変更した部分を一旦退避

$ git stash -u

u オプションをつけることによって、untrackファイルも含めて全てstashしてくれる

3. リモートリポジトリの最新情報をローカルリポジトリに持ってくる

$ git fetch

git pull のようにファイルが更新される訳ではない

4. 一応ブランチを確認したあと、レビュー対象のブランチに切り替え

$ git branch -a
$ git checkout remotes/origin/feature/fix_edit_page_view

レビュー対象のリモートブランチに切り替えてレビューする

5. レビュー後、自分が作業していたブランチに戻る

$ git checkout -

6. 退避させていたコードを戻す

$ git stash pop

先ほど退避させておいたコードを元に戻す

🤔 「マージしようとしたらコンフリクトが発生していてマージできない...」


自分が feature/fix_top_page_view ブランチでの作業を終え、pushし、プルリクを送った後にコンフリクトが発生していた場合

$ git pull origin develop

pull してくるとコンフリクトが起きるので、エディタ上でコンフリクトを解消し、再度 add してcommit して push

😭 「Gitで管理したくないファイル・フォルダをpushしてしまった」


Gitで管理する必要のない .vscode フォルダを push してしまった...

// フォルダの場合rオプションが必要
$ git rm -r --cached .vscode
$ echo '.vscode/' >> .gitignore

😭 「マージを取り消したい」


コンフリクトを解消するために色々変更とかしたけど、編集内容もマージも取り消したい

$ git reset --hard HEAD~
  • reset

    • インデックスを、指定した状態にリセット
    • HEADを指定したcommitに移動
  • 「HEAD~」「HEAD^」

~(チルダ)を後ろに付け加えることで何世代前の親かを指定することができます。^(キャレット)は、ブランチのマージで親が複数ある場合に、何番目の親かを指定することができます。
引用:サルでも分かるGit入門

その他

前回分のコミットメッセージと統合したい場合

$ git add .
$ git commit --amend

前回のコミットメッセージを書き換える。git graph を使って履歴を確認してみると前回のコミットメッセージが変更されている

revertとは

コミットを打ち消すコマンド。コミットを打ち消すのではなく、新たにコミットを追加することによってコミットを取り消している。

  • resetコマンド→コミットを取り消した形跡が残らない
  • revertコマンド→コミットを取り消した形跡が残る

間違ってresetしてしまったのでreset前の状態に戻したい

$ git reset --hard ORIG_HEAD

ORIG_HEAD:resetを実行する直前のコミット

rebaseでコンフリクトを解消した後どうすればいいの

rebaseで、コンフリクトを解消後はコミットではなく、--continueオプションを指定して実行

$ git rebase --continue

rebaseの作業を中止したい

$ git rebase --abort

直前のコミットと現在のコミットをまとめたい

$ git rebase -i HEAD~~
  • rebase

    • 作業が完了したブランチを分岐元のブランチと結合する際に使う(歴史を改変してしまう)
  • -i (interactive)

    • 過去のコミットを編集できる
      • 指定できるオプション
        • squash(コミットメッセージが必要な際に使用)
        • etc...

トピックブランチのコミットを1つにまとめて統合ブランチにしたい

$ git merge --squash ブランチ名

特定のコミットを取り出してdevelopブランチに追加する方法

$ git checkout develop
$ git cherry-pick fsdf342 //fsdf342はコミット番号

コンフリクトが起きた場合は修正して、add して commit

参考記事

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?