Help us understand the problem. What is going on with this article?

チーム開発時にお世話になるgitチートシート

More than 1 year has passed since last update.

今まで実質的に個人でしかコードを書いていませんでしたが、10月に入ってチームで動くようになりgitを用いた開発が増えてきました。元々はSourceTreeでgit管理していたのですが、ソースコードやブランチ量が多くなると動作が重くなり、ブランチの切り替えやgitの修正などを気軽に行うにはちょっと扱いづらくなったため、本格的にCLIのgitを覚える必要性が出てきました。

ここでは、自分がよく使うgitをまとめて、用途別で適切にgitのコマンドを引き出せるようになることを目指します。

git周りのよく使う基本コマンド

・新しいブランチを作成

$ git checkout -b new-branch

・既存のブランチに切り替え

$ git checkout exist-branch

・リモートの新しいブランチを取得

$ git fetch -a

・ブランチを更新

$ git pull

・ブランチ名の変更

$ git branch -m new-name-branch

ここから特に使うユースケースについて列挙します

一個前のコミットの名前修正したい

$ git commit --amend

もし既にリモートにプッシュしている場合はforce pushする必要があります

$ git push -f origin develop

オリジナルのブランチが更新された!変更分を今の開発ブランチに取り込みたい

$ git pull rebase origin develop-branch

この時、コンフリクトした場合はエディタで修正して

$ git add .
$ git rebase --continue

しましょう。やばくなったら

git rebase --abort

でキャンセルできます

コミットログが汚いのでコミットをまとめて綺麗にしたい

rebaseを使う方法

$ git rebase -i HEAD~3

これの場合は3つ前のコミットまで修正。不要なものをfixupして除くことで必要なコミットのみ取り出すことができる。
ただし、自分のコミット以前のコミットまでrebaseに含めるとそこも変更対象になるため注意。
一個一個確実にcommitを取り出す・修正できるがやや面倒

reset softを使う方法

$ git log --oneline

まず、gitのlogを出して、自分のまとめたいコミットのログの一番昔地点のポイントをログを確認してチェックする

次に、

$ git reset --soft old-branch

これにより、old-branchのポイントにHEADを動かすことができる。
ここで、HEADをまとめる

$ git commit --amend

この結果をpushする。こっちの方法だと、いちいちfixupとかエディタでブランチをどうするか指定する必要がないので楽は楽です。ただし、一部のコミットは残したいなどある場合は前述のrebaseの方が柔軟かと思います。

こうした修正をpushする場合は普通のpushでは弾かれるのでforce pushする必要があります

$ git push -f origin develop  

pullrequestを投げたけどなぜか過去の人のコミットが混ざってしまっている

先程のリベース間違いなどで発生します。

この場合は

$ git cherry-pick old-branch

によって必要なcommitのみを再抽出できます

ミスって必要なブランチが消えてしまった

$ git reflog
$ git checkout XXXX(logのid)

gitの変更履歴・アクションを記録している。そのため、消したブランチなどは上記reflogで確認してからgitcheckoutする必要があります。

結論

今日はあっさりめでしたが、チーム開発時のgitの各々のやり方のまとめを行いました。
gitというとなんとなくsource treeとかGUIでやってしまいがちでしたがCUIも覚えておくとプロジェクトが大きい時には結構便利だと感じました。

参考文献

最新のdevelopの取り込みはgit pull --rebase派
ワーキングツリー、インデックス、HEADを使いこなす方法

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
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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