【Git】Gitの使い方を考えてみた


# はじめに

この記事では
バージョン管理システムのGitを
職場で使うことを想定して
Gitの使い方についてまとめた記事です。

ベストプラクティスや間違いがあれば
それなりに良い方法で書き直していきます。

--------------------------------

# ベテランでもGitが扱えるとは限らないらしい

とある人に聞いたところによると
デキる技術者でも案外、
変更履歴のステージングやアド、コミットができないということらしい。
筆者は去年ぐらいからGitをプライベートで使い始めた一般の誤家庭の人

今度、新人君が配属されるということなので
彼にはちゃんと基本コマンドを覚えてもらいたいというオモイと
ちゃんとコードレビューできる体制と育てる環境を確立するという目標がある。

そうしたオモイや目標を実現させるためにGitの基本コマンドについてまとめてみました。
実際に職場に導入してもいないので
いざ使ってみるとこれもあれも必要となるかもしれないけど
とりあえず基本はおさえようというスタンス。

--------------------------------

# 想定される環境

客先常駐
リモートリポジトリ環境なし
GitHub使用不可
Windows10 Pro 64bit 
Git 2.26.2.windows.1

--------------------------------

# 想定される利用者

研修中のエンジニア（例えば、業務未経験者など）
初学者を教えるベテラン、中堅エンジニア

# 何を管理するか
ソースコード
たとえば
・TeraTermLanguage
・HTML
・JavaScript
・PHP

--------------------------------

# 初期設定(git config)

GitHubは使わない（使えない）けど
これがないと誰が何をしたかわからないので
最初に確認しておく。
user.nameは
PCの端末名と自分の名前をローマ字で入れておけばOK

mailaddressは会社のメールアドレスか
個人あてのメールアドレスがないなら
所属しているグループのアドレスがいいだろう。

```
$ git config --global user.name [username]
$ git config --global [mailaddress]
```
--------------------------------

# 最初に教えるべきコマンド

最初からブランチ切るのは難易度高いと思うので
手堅いところから教えていく

```
$ git init
$ git add -a
$ git status
$ git commit -am "命令系のコメント"
```
リポジトリの初期化は知っておかないと何事も始まらないだろう。

git add については -a と .(ドット)の違いについて
聞かれるかもしれないのであらかじめ考えておく

変更したかどうか知りたいこともあるだろう
そういうときのために
git statusコマンドを新人に叩き込んでおく

「先輩！どれ変更したかわかりません」と言われて対応するのは
正直なところ大変だ。
初回ならば何の問題もないかもしれないがことあるごとに
やられたら死ぬ。間違いなく死ぬ。

そして、最後にcommit
これもオプションについて聞かれるかもしれない。
ツッコミ用のアンサーを用意しておこう。

ここで大事なのがコメント付きのcommitかどうかである。
もちろん、commitからのリカバリー方法も大事だが
コメントが付いていないと
リカバリするときにいつまでのcommitに戻れば
いいかわからなくなる可能性がある。

--------------------------------
# 最低限教えたら次にブランチをやらせてみよう

```

$ git checkout -b ブランチ名
$ git branch

```

ここもオプションについてry
-b オプションは新規にブランチを作成して切り替えるという意味
すでに作成されているブランチがある場合はエラーになる。

checkoutでブランチを切り替えたと錯覚して
作業を続けてしまうというポカ防止のために
必ず、git branchコマンドを叩いて
現在、自分が参照しているブランチを意識させよう。

ここまできたらあとは運用方法である。

--------------------------------

# 新しくリポジトリをつくる場合

新人君に
リポジトリを作って
初期化して
アドして
コミットさせたい。
そして、ブランチの活用までやらせたい。
そう思っていろいろ考えましたが
Railsポートフォリオにある運用方法を踏襲させていただくことにしました。

最初のコミットメッセージは
なにが良いんだろうかと考えましたが
無難に「initial repository」として
２回目以降からは案件の管理番号というのが職場にあるので
それを入れてもらった形で体言止めで入力してもらう。

例えば、～機能の改修-XXXX みたいな感じ
ここは実際に使ってみて具体的に決めたほうが良さそう。

デデデ
masterブランチの修正は基本的に行わないものとして
新しくブランチを切ってから修正を加えて
チームかリーダーのレビュー後マージする形をとる。

レビューはどのようにして行うか
そのあたりのノウハウを集めないときつそうな感じがする。
おいおい、集めることとする（続


--------------------------------

# 出力メッセージの英語翻訳

あと、英語読めない人が圧倒的に多いはずなので
これらも職場のどこかに貼っておいて覚えてもらおう。

|単語|日本語|
|:-------------------------------------|:-----------------------|
|On branch master                      |親ブランチを参照しています         |
|No commits yet                        |まだコミットされていません           |
|Changes to be committed               |コミットされる変更               | 
|Changes not staged for commit         |変更がステージングされていません   |
|nothing to commit, working tree clean |作業ツリーにコミットするものは何もありません|
|discard changes in working directory  |作業ディレクトリの変更を無視する      |

--------------------------------

# 他
初期化といってgitの設定ファイル丸ごと削除されたどうしようとか
思っていますが
実際に使い始めてから考えることとする（続

--------------------------------

# まとめ
結論言うと、まずはこれらを新人君には覚えてもらおう。

```
$ git config --global user.name [username]
$ git config --global [mailaddress]

$ git init
$ git add -a
$ git status
$ git commit -am "initial repository"

$ git checkout -b ブランチ名
$ git branch
$ git checkout master
$ git branch

```
--------------------------------

# おわり