57
58

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 5 years have passed since last update.

【中上級者お断り】初心者のためのgit利用入門

Last updated at Posted at 2013-05-21

私は主業務がインフラなので、共同作業をする相手も同じくインフラなエンジニアが多いです。インフラエンジニアの中には開発経験が浅い、もしくは全く無い人間も少なくないので、scmの扱いはチームの最大公約数、故に原始的で汚くなります。

なので、gitの履歴をきれいに保つために、かんたんに出来るプラクティスについてまとめます。

作業の流れ

1. とりあえずブランチ

諸悪の根源の一つは、master(ないしは更新すべきブランチ)での直接作業です。なので、とにかくブランチを作ります。
お勧めは「今やろうと思っている作業」を単位にすることなので、名前もそれっぽい(make_backup_script_for_wapみたいな)感じで作ります。

$ git branch
# 初期状態
* maser

# ブランチを作って移動
$ git branch kinou_tsuika
$ git checkout kinou_tsuika

# 確認
$ git branch
* kinou_tsuika
  master

2. コミットは自由に

ブランチを切っている場合は、いくらコミットしてもとりあえずその中の話になります。なので、コメントを付けつつ気にせずコミットします。

# 編集して
$ vim hogehoge.txt

# commit
$ git add hogehoge.txt
$ git commit -m 'change parameters'

3. 長くなりそうなときはリモートブランチにさくさくpush

作成時間がちょっと長くなりそうだったり、違う端末でも作業をしたい場合は、2の作業結果をちょくちょくpushすると捗ります。

# リモートブランチを確認
$ git branch -a
* kinou_tsuika
  master
  remotes/origin/master

# 大丈夫そうなので、リモートブランチの作成
$ git push origin kinou_tsuika

# 無事できた
$ git branch -a
* kinou_tsuika
  master
  remotes/origin/master
  remotes/origin/kinou_tsuika

4. 履歴をきれいにまとめる

ここまでではリモートブランチを使う場合もメインでないブランチです。つまり、閉じた世界なのでどこにも反映されません。というわけで、反映してみます。

# メインのブランチに切り替えて
$ git checkout master

# ひとまず最新に更新して
$ git pull origin master

# 自分の変更分をsquashで取り込んで、再コミット
$ git merge --squash kinou_tsuika
$ git commit -m 'kinou_tsuika done'

# きれいになったコミットをpush
$ git push origin master

# 後始末のブランチ削除
$ git branch -D kinou_tsuika
$ git push origin :kinou_tsuika

まとめ

要点はこれだけです。これならできませんか・・・?

  • こまめにbranchをつくる
  • remote branchも気軽につくる
  • remoteへのpushは--squashなmerge後に

【番外編】失敗からの回復方法

ブランチ作るの忘れちゃった

気付いたらmasterとか、直接更新しないはずのブランチを更新しちゃってた場合

# コミット未遂
$ git status
変更内容がずらずら…

# 現在の変更内容を一時保存(コミットではない)
$ git stash

# 急いでブランチを作り直して
$ git branch hoge
$ git checkout hoge

# 一時保存したやつを戻す
$ git stash pop

ブランチ壊しちゃった

masterブランチがえらいことになった。自力でなおせない。。。

# mergeに失敗してmasterが壊れた。。。
$ git branch -a
  master
* kinou_tsuika
  remotes/origin/master

# 壊れたローカルのmasterを消す!
$ git branch -D master

# そして再生
$ git checkout -b master origin/master
$ git branch
* master
  kinou_tsuika
  remotes/origin/master
57
58
1

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
57
58

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?