LOADING

saco blog logo

Webコーダー日記

【もりけん塾】gitについて学んだこと

webコーダーのsaco @sacocco_sacoya です。
2024年4月よりもりけん塾の塾生となりました。

最初の勉強として、gitハンズオンでgitについて学んだメモを記します。
(自分用メモとして勉強になったことのみメモします。)

gitコマンド

git clone リポジトリのURL

git hubでリポジトリを作成したら、リポジトリURLをコピーしてターミナルに上記コマンドを入力する。

git status

gitがあるディレクトリ以下のファイルの変更状態を表示してくれる。

git add

変更したファイルをステージングエリアに追加してくれる。

git add -u

変更された全ての差分をインデックスにUPする -uオプション。
git statusでmodifiedとなっている変更が対象。

newは対象外。newも含める場合は git add –all

git commit

ステージングエリアに追加された変更をリポジトリの履歴に(永続的に)記録するためのコマンド。
ローカルリポジトリに保存され、それらの変更に関するコミット(変更履歴の一単位)が作成される。

コミットを行う際にはメッセージを付与する。
メッセージはVimエディタが起動する。(「その他メモ」項目内にVimエディタの詳細メモあり)

Vimエディタで1行目にタイトルを記述し、3行目に本文を記述する。

↓commitした結果

git commit -m “タイトル” -m “本文”

このコマンドでも上記と同じくコミットすることができる。
git commit -m “タイトル”とすれば本文は省略してコミットできる。

git commit –amend -m “タイトル” -m “本文”

1つ前のコミットを編集し直すことができる。
コミットの内容を誤ったときに便利。amendとは修正という意味。

git push

ローカルのコミットをリモートリポジトリにアップロードする。
これにより、他の人もその変更をリモートリポジトリからフェッチまたはプルできるようになる。

git fetch

リモートリポジトリのデータをローカルにあるブランチにダウンロードする。
この段階ではローカルの作業中のファイルやブランチにはなんの変更も行われない。
git fetchでは、最新のコミット、ブランチ、タグなどの情報を確認することができるので、ローカルの作業に影響を与えずに、他の開発者による変更を確認することができる。
安全にコードの更新と統合を行うためのもの。

git merge

git fetchで取得した変更を、現在チェックアウトしているブランチにマージ(統合)してくれる。
これにより、リモートリポジトリでの変更がローカルの作業ブランチに反映される。

git pull

リモートリポジトリから最新の変更をローカルリポジトリに取り込む操作。
git fetchとgit mergeを同時に行ってくれるもの。
他の開発者が行った変更(リモートリポジトリに上がっているもの)を自分のローカル環境に取り込むことができる。
↓pullしたときの挙動。feature/aというブランチで作業し、pushした内容をmainブランチにpullした。

git leflog

Gitのreflog(参照ログ)を利用して、過去に入力したコマンドを確認できる。

git branch

今いるブランチを確認できる。

git checkout ブランチ名

ブランチの切り替え(移動)を行うことができる。

git checkout -b ブランチ名

ブランチを新たに作成して、そこに移動する。

git diff

ワーキングディレクトリの現在のファイルの状態と、ステージングエリアのファイルの差分を確認できる。
ステージングされていない(addしていない)変更点を確認したい時に使う。

git diff –cached

ステージングエリアと1つ前のコミットの差分を確認できる。

git log / git log –oneline / git log –graph

コミット履歴を見れる。
git log なら詳しく確認でき、 git log –onelineは1行で簡潔に確認できる。

git log –graphは視覚的・直感的に確認することができる。

git push origin head

現在チェックアウトしているブランチ(HEADが指しているブランチ)の最新の変更をリモートリポジトリの同じブランチ名に反映するコマンド。リモートにそのブランチがなければ新規作成してくれる。

↓ブランチが新規作成された場合

origin とは、リモートブランチのアドレス名のこと。
gitでは、リモートリポジトリにアドレス名(名前)をつけることが一般的で、最初にリポジトリをクローンする際にデフォルトで設定されるリモートリポジトリの名前が origin となっている

headとは、ブランチのHEADの位置(多くの場合、ブランチの最新のコミットを指す。)
HEADとは、「現在チェックアウトしているブランチ」(ユーザーが作業しているブランチ)

git reset –soft HEAD^

1つ前のコミットをリセットして、ステージング状態に戻してくれる。

プルリクエスト

プルリクエストとは、開発者がコードの変更を共有し、レビューを受けるための手段。
各コードについての疑問を質問するなど、コード品質改善のためのコミュニケーションが取れる機能。

↓新しいブランチからpushしたときの挙動


このURLへアクセスすると、プルリクエストの画面へ遷移できる

遷移すると以下のような画面が表示される。
↓赤枠内はコミット番号

任意の行のプラスマークをクリックすると、フォームが表示され、コードレビューを行う人に対してメッセージを残しておくことができる。

github上でプルリクエストを取り込む

変更箇所を確認して、問題なければ取り込む。Merge pull requestボタンを押す。

マージコミットのタイトルと本文を確認して、問題なければConfirm mergeボタンを押す。

mainブランチにfeature/aブランチの変更がマージされた。

コミット履歴を確認すると、マージした際に自動生成されたマージコミットが追加されている。
(マージを行うと、「マージコミット」というコミットが1つ追加される。)

その他メモ

Untraced file

git上で管理されていない(commitされていない)ファイルのこと。

インデックス(ステージングエリア)

インデックスとは履歴に残すかどうかを判定する場所。ステージングエリアとも呼ばれる。

ワーキングディレクトリ

ローカルリポジトリの一部で、ユーザーが直接ファイルを編集する場所。

カレントブランチ

現在チェックアウトしているブランチ

マージ

異なるブランチの変更を統合すること

HEAD

現在チェックアウトされている最新のコミットを指す。

コミットの並び順

Gitのログは、最新のコミットが一番上に表示され、下に行くほど過去のものになる。

コマンド

open .

このコマンドを入力するとFinderを立ち上げてくれる。

code .

ターミナルからVS Codeを立ち上げることができる。※以下の設定が必要

VS Codeを開き、コマンドパレットを開き(⌘ + shift + P) shellと入力してcodeというシェルコマンドをインストールし、ターミナル上で code . とするとVS Codeが立ち上がる

※ もりけんさん曰く:時々立ち上がらなくなることがあるので、その場合はシェルコマンドをアンインストールしてからインストールし直すと◎

.(ドット)

カレントディレクトリと、そのサブディレクトリ内全てを対象とすること

//例
git add .

Vimエディタ

エディタ起動時は「ノーマルモード」となっているので、「入力モード」に切り替える必要がある。
「i」キー:入力(インサート)モード

「Esc」キー:入力モードからノーマルモードに戻る

「:wq」:保存して終了

「:q!」:保存せずに終了

「:wq!」:変更内容を強制的に保存し、何かしらの理由でファイル書き込みが不可の場合や、他のプロセスがファイルを使用中でもVimを終了させることができる。(保存+強制終了)

「w」はwrite、「q」はquietの略。

control ^ ショートカットキー

^ + w

一単語分削除

^ + u

全部削除

^ + p

履歴を遡る

^ + r

gitコマンドを検索してくれる

感想

このハンズオンを学ぶまで、基本的にはGitHubDesktopを利用しながら、こわごわGitを触っているレベルでしたが、ターミナルで操作するgitの基本的な流れを学習でき、今回初めてプルリクエストまで学ぶことができました。

途中、ハンズオンの流れとは違うブランチに居るまま作業してしまい、ハンズオン通りの挙動にならず混乱しましたが、再度リポジトリを作り直して1から確認しなおすことでなんとか最後まで進むことができました。
(教材の文章はきちんと読まないといけないと反省しました。)

まだ完全に理解できたとは言い難いですが、少しずつ慣れていきたいです。

もりけん@terrace_tech さん、貴重な教材をありがとうございました。

もりけんさんのブログ→ 武骨日記

PROFILE

saco profile img

SACO

1990年12月生まれ / 岡山県在住

WEBコーダーです。
2019年から独学でweb製作の勉強を開始し、2020年にコーダーに転身しました。
製作の備忘録など記していきます。
ショートカットキー、notionが好きです。

ポートフォリオサイトです

saco portfolio logo