Git短答

➀Gitとは?

プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムです。

 

➁リモートサーバ、ローカルサーバとは?

ローカル

ユーザ一人ひとりが利用するために、自分の手元に配置するリポジトリです。

リモート

ネットワーク上で複数人で共有するためのリポジトリです。

 

➂コミットとプッシュの違いは?

・コミット

作業ディレクトリからステージングさせローカルリポジトリ内にファイル情報を保存・記録することです。

・プッシュ

ローカルリポジトリからコミットしてきたファイル情報をリモートリポジトリへの反映させること


➃コミットせずに作業を退避するには?

git stashを使用すると、コミットしていない変更(git addでステージングにしているものとしていないもの(作業ディレクトリ内)両方)を退避します。


➄フェッチとプルの違いは?

・フェッチ

リモートから最新情報をローカルに取ってくるのですが、originが付いたリモートを追跡するブランチが受け取ります。

その後、git mergeでローカルのmasterブランチにマージをして作業ブランチにという流れになります。

f:id:mkyosuke:20191225163805p:plain

・プル

リモートからoriginが付いた追跡ブランチを介して一気にローカルのmasterブランチで受け取れる。

f:id:mkyosuke:20191225163844p:plain


➅reset と revert の違いは?

・revert

変更履歴ABCがあり、Bのコミットを打ち消した場合、新たにDという変更履歴が作成される。Dの変更履歴はBのコミット変更履歴を打ち消した変更履歴であるという事です。HEAD位置もDの変更履歴に移動します。

f:id:mkyosuke:20191225140755p:plain

・reset

変更履歴ABCDがあり、CDのコミットを削除しBの変更履歴に戻ります。revertと違って新たに変更履歴が作成はされません。HEADの位置もBの変更履歴に戻ります。

f:id:mkyosuke:20191225141408p:plain



➆ブランチを切り替える時のコマンドは?

ブランチを切り替えたい時はgit checkoutコマンドを実行します。


➇過去のコミットメッセージを書き換えるには?(2つ)

・git commit の「--amend」オプション

--amend オプションは直前のコミットを「置き換える」コマンドです。

・git rebase -i (--interactive)

変更履歴が2つ以上の過去のコミットコメントをを修正したい場合。


➈Push前の自分のブランチで、過去の複数のコミットを一つにまとめるには?

過去のコミットをまとめるには、git rebase -iを使います。

まず、git log でリベース対象のコミットを確認します。

次に「git rebase -i (リベースしたいコミット番号)」

でリベースを実行。

すると、エディタを開きpickからsquashに変更して、エディタを保存する。


➉リモートにPushするときに気をつけることは?

プッシュする前に、「Pull」もしくは「Fetch+merge」をし、ローカルを最新状態へ更新する。

 

⑪タグはどんな時に作るもの?

過去のコミット変更履歴を参照しやすくするためです。


⑫GitFlowとは?

Git flowでは、それぞれ役割が振られているmaster, release, develop, feature, hot-fixの5つのブランチを使い分けて、開発を進めていくことです。

feature……開発をおこなうためのブランチで、個々の機能の実装やバグの解決を行う
develop……開発をおこなうためのブランチ
release……リリース前に準備、微調整をおこなうブランチ
master……リリースしたデータを置いておくブランチ
hot-fix……リリースされているデータに、緊急の修正対応をするためのブランチ