2
0

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 2019-06-18

1.gitとは

バージョン管理システム。バックアップや共同制作等を効率よく行うために使う。

・ファイルの変更(更新)を自動で管理してくれる
・だれが、いつ、どこを追加・変更・削除したかを記録してくれる
・過去の状態に戻すことができる

使うツール

PhpStorm(エディタ)
Backlog(gitシステムを使って動いているサービス)

2.PhpStormとは

PHPでプログラムを書く人にとって、最強のIDE。

3.Backlogとは

  • プロジェクト管理
  • 課題管理

PhpStormと連携して課題を管理

運用ルール

「プロジェクト/バックログ運用ルール」を参照

4.ローカルリポジトリとリモートリポジトリ

リモートリポジトリは「みんなのファイルやディレクトリの状態」が保存されている場所のこと。(管理する方「部長」)
ローカルリポジトリは「自分のファイルやディレクトリの状態」保存されている場所のこと。(管理する方「課長」)
作業ディレクトリで開発を行う。(操作する方「一般社員」)
リポジトリ.png

5.クローン

リモートリポジトリの内容をそのままローカルリポジトリとして複製すること

Backlogから作業するリポジトリをコピー
スクリーンショット 2019-06-06 19.54.27.png

Phpstormホーム画面の「バージョン管理からチェックアウト」押して
スクリーンショット 2019-06-06 19.51.23.png

リポジトリを貼り付けて
スクリーンショット 2019-06-06 20.00.40.png

右下のクローン!

新規案件でリポジトリに初めてファイルをコミットする時の注意

PhpStormの機能ファイル「.idea」はコミットしなくていい
デフォルトではコミット一覧に出てきてしまう、ファイルを無視してコミットしないようにしよう
①ファイルまたはディレクトリと同じ階層に「.gitignore」ファイルを追加
中身

/.idea

「/」つけることで.ideaディレクトリ配下のファイルも無視

まだコミット一覧にいるときはキャッシュが残っちゃてるだけだから、コマンドを実行。(GUIはないぽい)

git rm -r --cached .idea/

6.コミット

ファイルを追加・変更・削除した際、変更内容をローカルリポジトリに反映すること
スクリーンショット 2019-06-07 19.05.51.png

コミットする前にやること

①コミットメッセージにチケットを貼る
貼り付けることでチケットに共有される。
スクリーンショット 2019-06-07 19.10.01.png

②「コードの再フォーマット」にチェックつける
③「バージョン管理外ファイルの表示チェック」につける
スクリーンショット 2019-06-07 19.14.55.png

③「PhpStorm」→「環境設定」→「バージョン管理」→「コミット・ダイアログ」→「バージョン管理外ファイルの表示」チェックつける
スクリーンショット 2019-06-07 19.23.23.png

一度コミットしたファイルがまだコミットリストにいる場面に遭遇した。キャッシュクリアしてもnotfoundって言われるし、そんな時はコミットリストをリロードしよう。

コミット取り消しコマンド

(GUIではないぽい)

git reset --soft HEAD^

たまにバージョン管理外ファイルが参照できなくて困る場合がある。

(今度その状況に遭遇したら画像載せます)
解決するためのコマンド(GUIはないぽい)

git add .

7.プッシュ

ローカルリポジトリで追加・変更・削除したファイルの内容をリモートリポジトリに反映すること
スクリーンショット 2019-06-07 19.27.46.png
コミットのプッシュをする前にもう一度修正点を確認しよう。
※アナタ以外の人が同じファイルを修正し、リモートリポジトリにプッシュしてた場合、コンフリクトエラーになる。(11.競合の解決で説明)

プッシュ取り消し

誤ってプッシュしてしまっても大丈夫。コマンドでの操作になるが、間違えましたと分かるようにプッシュし直せばいい。
直前のコミットを戻すコマンド(GUIではないぽい・・・)

git revert HEAD
スクリーンショット 2019-06-11 16.09.52.png なんか嫌な感じのでてくるけど、「:wq」押してEnterキーでOK。(コミットメッセージこれでいい?って聞かれてるだけ) あとは「プッシュ」すればいい

8.プル

リモートリポジトリの最新の履歴をローカルリポジトリに反映すること
「フェッチ」+「マージ」のほうが丁寧(みんなプル使ってるけど)
※プッシュと同じく、コンフリクトする可能性がある。(11.競合の解決で説明)

フェッチ

リモートリポジトリの最新の履歴をローカルリポジトリに取得。
差分みるコマンド(GUIではないぽい・・・)

git diff HEAD [リポジトリ/ブランチ名]

マージ

結合。

9.ブランチ

1つのプロジェクトから分岐させることにより、プロジェクト本体に影響を与えずに開発を行える機能のこと。
他のブランチに影響を与えず、複数人が同時平行で作業を行うことができる。
作業単位で履歴を残すことで後で見た時にわかりやすい。
スクリーンショット 2019-06-11 9.14.39.png

↑画像見たい時のパス 「Backlog」→「各プロジェクトのGit」→「各リポジトリのネットワーク」

以下、ブランチの命名規則。(開発の規模によって異なる)

必須

以下のブランチは全プロジェクト必須です。

マスターブランチ(master)

命名規則:master(固定)

リリース可能な完全な品質を保証する。
原則として本番環境で動作しているプログラムと同一となる。ただしマージ中など、タイミングにより原則を満たさない可能性がある。
直接コミット禁止。特定のブランチからマージすることでのみ更新がおこなわれる。
featureブランチはこのブランチから派生する。

機能開発ブランチ(feature)

命名規則:feature/[課題番号]_[機能名]

新しい機能の開発をおこなうためのブランチ。
masterから分岐して作成し、最後はmasterにマージする
機能名は、処理がイメージできるものにすること
☓:feature/DWW001
○:feature/DWW001_fix_point_calculation

任意

以下のブランチは任意です。プロジェクトの特性に合わせて取捨選択してください。

開発ブランチ(development)

命名規則:development(固定)

開発中の機能がすべて統合されるブランチ
直接コミット禁止。featureからのmargeのみ

リリースブランチ(release)

命名規則: release/[YYYYMMDD-NN] ※NNは01から開始

masterブランチから分岐して作成する。
リリース用の課題を集約して、リリース版を確定させるためのブランチ。
本ブランチをステージング環境にデプロイして動作確認をおこない、リリースが確定したらmasterブランチにマージした後、masterブランチにタグを作成してリリースをおこなう。
YYYYMMDDはリリース日を指定

ホットフィックスブランチ(patch)

命名規則: patch/[課題番号]_[機能名]

masterに対する修正をおこなう際に利用するブランチ。緊急対応など。
masterから分岐して作成し、最後はmasterにマージする。

10.プルリクエスト

各ブランチの作業を他のブランチに反映すること。
例) 存在するブランチ master development feature_a feature_b
作業したブランチ → 反映したいブランチ
feature_a   →  feature_b
feature_b →  development
development →  master
スクリーンショット 2019-06-10 15.20.08.png
プルリクエストを追加後、担当者にチャットワークで報告。確認してもらう。(URLつける)
担当者確認後、マージしてくれる。

コンフリクト問題

修正点が重複しなければそれぞれの変更を適用でき、問題なくマージされる。
また、修正点が重複しててもその変更内容が同じであれば、問題なくマージされる。
問題なのは、重複する点の変更内容が異なるとき。このときはどちらを適用すべきか判断しなければならない。

11.リベース

ログを綺麗にできる。ただし、他の人のコミットを勝手に作り直す可能性があるため、気をつける。
リベースで出来ること
①開発コミットを繋げ直す
「e2info-kusano-step2ブランチ」と「e2info-kusano-step3ブランチ」がある。
スクリーンショット 2019-06-11 14.42.04.png
「e2info-kusano-step3ブランチ」を失くして、「e2info-kusano-step2ブランチ」を一本化する。
「e2info-kusano-step3ブランチ」にチェックアウト
「VCS」→「Git」→「リベース」
スクリーンショット 2019-06-11 14.56.57.png
「リベース」
スクリーンショット 2019-06-11 14.57.13.png
アクションを「pick」でリベース開始
リベースすることで「e2info-kusano-step2ブランチ」のローカルリポジトリに「e2info-kusano-step3ブランチ」の履歴が反映される。
「e2info-kusano-step2ブランチ」にチェックアウト
「e2info-kusano-step3ブランチ」をプル
スクリーンショット 2019-06-11 17.13.31.png

履歴が反映していることがわかる。
スクリーンショット 2019-06-11 15.10.17.png
「プッシュ」
スクリーンショット 2019-06-11 15.10.39.png
一本化される。

12.競合の解決

同じファイルを編集してしまうことを「競合する(コンフリクト)」という。
競合した場合、どっちのファイルを反映しますかエラー吐く。
例)課題:ドラえもんの顔を完成させる
      Aさんの課題:ひげ担当
      Bさんの課題:目担当

ドラえもんリポジトリ
Aさん ドラえもんリポジトリをクローン→ひげファイルを編集→コミット→プッシュ
Bさん ドラえもんリポジトリをクローン→目ファイルを編集→コミット→プッシュ


ドラえもんリポジトリ
Aさん ドラえもんリポジトリをクローン→ひげファイルを編集→コミット→プッシュ
Bさん ドラえもんリポジトリをクローン→ひげファイルを編集→コミット→プッシュ

競合の解決
メニューバー「VCS」→「Git」→「競合の解決」
スクリーンショット 2019-06-11 16.25.24.png
「login.php」を押すと
スクリーンショット 2019-06-11 16.25.37.png
真ん中を解決した状態にする

13.タグ

スクリーンショット 2019-06-11 10.30.39.png タグに名前をつけて「タグの作成」 スクリーンショット 2019-06-17 19.05.49.png

作成後、ローカルリポジトリに追加される。
スクリーンショット 2019-06-17 15.54.46.png
プッシュ・タグにチェックを付けて「PUSH」

リリースタグ

本番リリース時にタグ付けを必須とする。
masterブランチに対してタグ付けする
タグのルールは以下の通り
rel-yyyymmdd-連番

【連番】
数字2文字の連番。


rel-20161116-01
rel-20161116-02

スクリーンショット 2019-06-11 10.13.57.png

最新リリースにバグが見つかった場合、前回のリリースタグに戻す

2
0
2

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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?