4
1

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

Gitについて

Last updated at Posted at 2021-02-08

はじめに

2月からマイスターギルドに入社しました!
技術的な部分もQiitaもまだまだひよっこのため、
研修の内容をこれからアウトプットしていきたいと思います。
よろしくお願いします。

今回は「Gitについて」書いていきたいと思います。

学んだこと

Gitとは

編集した内容、履歴を管理することができるツール

○○を表示されるようにした
××を修正した

などの記録を残して管理することができる

ローカルとサーバーの違いは?

ローカルは自分のみの作業場所
サーバーはみんなで共有できる作業場所(GitHubなど)

Git用語

commit

編集内容をリポジトリ(保管場所)に記録する

なぜcommitの前にaddが必要なのか?

addをすると、リポジトリとワークツリー(作業場所)の間にあるインデックスという場所に保管される
これを経由することで必要のない変更を含めずにcommitできたり、一部の変更のみを指定してcommitすることができる

push

ローカル上にコミット3つ サーバー上にコミット2つ
「ローカルのコミットをサーバーに反映させたい!」

→ pushするとサーバーに反映される

pull

ローカル上にコミット2つ サーバー上にコミット3つ
「サーバーのコミットをローカルに反映させたい!」

→ pullするとローカルに反映される

pull request

push後、GitHub上でpull requestを投げてレビューしてもらう

意識することはreviwersが見やすいpull request!
何のために書いたのか作業内容・目的を明記する

  • タイトル、本文の記載
  • 変更概要、タスクへのリンクを貼る
  • 変更箇所へのコメントの記載

merge

作業内容を取り込む時に使う
今までのbranchを統合する

fast merge
進行度合いが同じだった場合、merge、commitがそのまま取り込まれる

non-fast merge
進行度合いに違いがあった場合、元commitのあとにmerge commitという修正内容は同じだが違うcommitがつくられる

進行度合いに違いがあるときにもfast mergeできる?

rebaseを使うとbranchの進行度合いが揃う = fast mergeできる!

fetch

リモートの最新情報をローカルにもってくる
origin / ブランチ名(リモート追跡ブランチ)が更新されるだけで、ローカルブランチ自体は更新されない

fetch:リモートのmasterブランチからローカルのorigin / masterブランチに最新情報がくる
merge:ローカルのorigin / masterブランチからローカルのmasterブランチに最新情報がくる

このfetchとmergeを合わせたものが pull

rebase

ブランチを生やし直す
変更内容は同じで新たなcommitがつくられる

GitHub上で使うmerge(3種類)

どういうmergeするのか決まりをつくって開発していく

create a merge commit
何をmergeしたのかcommitが残る

rebase and merge
編集内容は同じだけどcommitとしては別のものがつくられる
履歴が一本化されて見やすくなる

squash and merge
merge元の複数のcommitをまとめて完全に新たなcommitをつくる
まとめすぎるとmergeが戻せなくなるので、機能単位でsquashするのがよい

コンフリクト

複数人で作業していて同じ行で異なる修正をしてmergeした場合などに起こる
手動で変更が必要

conflictが起きないように意識できること
  • プランニングの段階でコンフリクトは予見できるので作業が平行しないように調整する
  • コードの責務が明確な状態になっている
  • タスクの範囲とcommitの変更内容を一致させる
  • フォーマッタのルールを統一する

Git Bashを使ったrebase

git rebase -i <commit位置>

commit位置に入るもの

  • branch名
  • commit hash
  • HEADからの相対位置
  • 「HEAD~~~」とするとHEADから3commit前という意味になる
補足:HEADとは?

現在作業している場所、作業ブランチのこと
※commit自体を指すこともある

branch運用の考え方 ~git flow~

4つのフェーズに分けて考える

開発フェーズ
新しい機能が追加される

使うブランチ:develop、feature(feat)
親ブランチ:master

運用フェーズ
本番環境でアプリが動いている

使うブランチ:master

保守フェーズ
バグを修正する
リファクタする

使うブランチ:fix(hotfix) 
親ブランチ:master、release(開発後relaseブランチで修正するとき)

テストフェーズ
(開発は終わっている状態)
新しい機能やバグの修正、リファクタを加えた状態の動作確認をする

使うブランチ:release
親ブランチ:develop

まとめ

今まで深く考えずにGitを使用していたため、研修という形で学ぶことで理解が深まりました。
実際に手を動かして操作する際に、今回SourceTreeを利用したことで、インデックスという場所があることも視覚的に確認でき、コミットの動きなどがイメージがしやすくなりました。
Git bushでのvimの操作だったり、rebaseなど初めて使うコマンドも多かったのでこれから使いながら覚えていきたいと思います。

4
1
0

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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?