はじめに
本記事は、三重大学 計算研 Advent Calendar 2019 23日目です。
Gitを個人で普段使いするときに便利だなと思っている機能を3つ紹介します。
共同開発をしているときはむやみやたらに使用しないことをおすすめします。
この記事では、次の3つの方法を扱います。
- merge時にlogをキレイに保つ方法
- 直前のcommitの簡単な修正方法
- GitHub等のremoteブランチの削除方法
merge時にlogをキレイに保つ方法
新機能を追加するときは、masterブランチ以外(例えばfeatureブランチ)で作業を行うのが一般的です。
通常、featureブランチで新機能の実装を行った後、masterブランチにmerge
します。
しかし、何も考えずにmerge
してしまうと、masterブランチに実装時の細かなcommit
が追加され、ログが読みづらくなってしまいます。
そんなときに便利な機能がsquash
です。
merge時にsquash
を指定すると、次のようにmergeするcommitを1つにまとめてmasterブランチのlogをキレイに保てます。
<BEFORE>
- ...
- 新機能〇〇用関数 new_feature() を追加。
- new_feature() にエラー処理を追加。
- new_feature() の型を修正。
- new_feature() にコメントを追加。
- new_feature() のコメントを修正。
- new_feature() の変数名を変更。
- new_feature() のコメントを修正。
- ...
<AFTER>
- ...
- 〇〇をする機能を追加。
- ...
squash
を使うには、merge
時に--squash
を指定します。
[ブランチ名を確認]
$ git branch
feature
* master
[merge時にsquashを指定]
$ git merge --squash feature
Updating b1e991e..df95b90
Fast-forward
Squash commit -- not updating HEAD
new_feature.c | 16 ++++++++++++++++
README | 5 +++++
2 files changed, 21 insertions(+)
create mode 100644 new_feature.c
[merge分をコメントを付けてcommit]
$ git commit -m "〇〇する機能を追加"
[master 563bc73] 〇〇する機能を追加
2 files changed, 21 insertions(+)
create mode 100644 new_feature.c
今回紹介したのはmasterブランチ側でcommitをまとめる方法ですが、featureブランチ側でまとめる方法もあります。また、共同開発をしている場合はfeatureブランチ側で変更内容をまとめてからプルリクエストを送るほうが良いらしいです。
featureブランチ側でまとめる方法は 【git rebase -i】gitのcommitをまとめる で解説されています。
直前のcommitの簡単な修正方法
皆さんは、git commit
をした直後に
「あ、ミスったな」
って思ったことはありませんか?
amend
というオプションを使うと、直前のcommit
をしなかったことにして改めてcommit
し直すことが出来ます。
この機能を使えば、
- 追加忘れのファイルの追加
- コメントの誤字・脱字を修正
- ファイル内の誤字・脱字を修正
などの作業を簡単に行なえます。
やり方は簡単で、commit時に--amend
を付けるだけです。
[修正する対象]
$ git commit -am "昨日書いたところにエラー処理を追加"
[master e1f21dc] 昨日書いたところにエラー処理を追加
1 file changed, 20 insertions(+), 2 deletions(-)
[amendを使って直前のcommitを修正]
$ git commit -am "サーバ側が異常終了したときのエラー処理を追加" --amend
[master 3eb9d2c] サーバ側が異常終了したときのエラー処理を追加
Date: Sat Dec 21 11:24:38 2019 +0900
1 file changed, 20 insertions(+), 2 deletions(-)
--amend
を付けるだけで、前半のcommitはしなかったことになり、後半のcommitに統合されました。commitしなかったことになるだけなので、作業内容は失われません。
GitHub等のremoteブランチの削除方法
ローカルで不要になったブランチを削除するには
git branch -d <BRANCHNAME>
を実行します。
しかし、これだけではGitHub等の外部にあるブランチは残ったままになります。
そんなときにはgit push <REMOTENAME> :<BRANCHNAME>
を実行します。
<REMOTENAME>
はリモート名(下の例ではorigin)、<BRANCHNAME>
は削除したいブランチの名前で置き換えてください。
[remote名を確認]
$ git remote -v
origin github:AkiraHasegawa1997/hogefuga_project (fetch)
origin github:AkiraHasegawa1997/hogefuga_project (push)
[GitHub上のtestingブランチを削除]
$ git push origin :testing
To https://github.com/AkiraHasegawa1997/hogefuga_project.git
- [deleted] testing
このコマンドは、ブランチ名を空文字にリネームすることでブランチの削除をしています。
※注意:一度削除したら戻せません。
まとめ
今回は自分が個人用リポジトリでよく使うGitの機能を紹介しました。
この記事が少しでも役に立ったら幸いです。
ここまで読んでいただきありがとうございました。