Git/GitHub基礎
- 1. Gitとは
- 2. Git\&GitHubの使い方
- 2.1. ローカルリポジトリにおける作業フロー(Git)
- 2.1.1. GitへのGitHubアカウントへの設定
- 2.1.2. ローカルリポジトリの作成
- 2.1.3. ローカルリポジトリでのGitフロー
- 2.1.4. ブランチの切り方と切り替え方
- 2.1.5. リポジトリの状態の確認
- 2.1.6. コミットした履歴の確認
- 2.1.7. ファイルの削除とステージングエリアへの追加
- 2.1.8. ファイルの変更差分の確認
- 2.1.9. ファイルの状態を直前のバージョンに戻す
- 2.1.10. ファイルを古いバージョンに戻す
- 2.1.11. Git管理下のフォルダ名を変更する
- 2.1.12. 既にGit管理化となっているファイルやディレクトリをgit管理化から外す
- 2.2. リモートリポジトリを含めた作業フロー(GitHub)
- 2.2.1. リモートリポジトリの作成
- 2.2.2. リモートリポジトリへのプッシュ
- 2.2.3. リモートリポジトリからプル(ローカルへの反映)
- 2.2.4. リモートリポジトリの確認と変更(上書き)方法
- 2.2.5. リモートリポジトリの削除
- 2.2.6. リモートリポジトリからのクローン
- 2.3. その他のGitコマンド
- 3. .gitignoreに関して
1. Gitとは
Gitは分散型のバージョン管理システムの1つ。
ファイルのバージョン管理が簡単にできるツールといえる。
また以下のような特徴がGitにはある。
- 古いバージョンに簡単に戻せる
- 新旧のファイルを一元管理できる
- 編集した履歴を複数人で共有できる
- 複数人で修正した部分を一つに統合できる
1.1. リポジトリ(Repository)
リポジトリとは、ファイルやディレクトリを入れて保存しておく貯蔵庫のこと。
Gitにおけるリポジトリは以下の2種類に分かれている。
- リモートリポジトリ(共有リポジトリ) ・・・ 特定のサーバー上に設置して複数人で共有するためのリポジトリ
- ローカルリポジトリ(個人リポジトリ) ・・・ ユーザーごとに配置される手元のマシンで編集できるリポジトリ
2種類のリポジトリに分けることで、普段の作業はそれぞれのユーザーが手元のローカルリポジトリで行い、作業内容を共有するときにリモートリポジトリで公開するという使い方になる。
リモートリポジトリを介して他のユーザーの作業内容を把握することも可能。
1.2. コミット(Commit)
コミットは、ファイルやディレクトリの編集作業をローカルリポジトリに記録するために必要な操作のこと。
コミットを実行するとファイルを編集した日時を記録したファイルが生成される。
コミットを実行するごとにファイルが生成され、時系列順にならんで格納されるので、ファイルを編集した履歴やその内容を確認することができる。
1.3. プッシュ(Push)
プッシュとは、ローカルリポジトリにあるファイルをリモートリポジトリに送信して保存する機能。
共有リポジトリへの反映が行われるため、アップロードともいえる。
クローンと異なるのはローカルリポジトリとの差分のみをダウンロードして更新する点
1.4. プル(Pull)
プルとは、共有されているリモートリポジトリに保存されているファイルの内、ローカルリポジトリ(あなたのローカル環境)に無いファイルや他のユーザーが更新したファイルのみをダウンロードする機能。
ようするにリモートリポジトリの内容を同期させるとも言える。
1.5. クローン(Clone)
クローンとは、ダウンロードに近いものもの。
複数人で共有しているファイル(リモートリポジトリ)をまるごと自分のローカル環境(ローカルリポジトリ)に保存する機能。
まったく新規で開発の共有を始める場合に最初に行う作業といえる。
1.6. ブランチ(Branch)
ブランチとは、ファイルの編集履歴を分岐させて記録していく機能のこと。
WEBサービスやソフトウェアの開発において、バグの修正や、機能の追加などのファイル編集作業は複数のユーザーが同時に行うことも少なくない。
並行して同時に行われる作業を正確に管理するためにGitにはブランチという機能が用意されています。これがGitのバージョン管理を効率的にし、間違いを減らすためにもっとも活かされている機能ともいえる。
例としてマスターブランチであるメインのブランチと、そこから分岐してバグの修正や、機能の追加を行っているブランチを記すと以下のようになる。
1.7. マージ(Merge)
複数のブランチを一つにまとめて、完成形に近づけることをマージと呼ぶ。
ブランチの図で言うとバグの修正や、機能の追加を行ったブランチがマスターブランチに統合されている部分のこと。
1.8. フェッチ(Fetch)
リモートリポジトリからファイルの最新情報を取得してくる操作のこと。共有されているファイル(リモートリポジトリ)の更新を確認したり、複数人の作業の擦り合わせのために使う機能といえる。
プルと異なる点はローカルのファイルを更新することはないこと。
複数人で同じファイルを編集しているときでもお互い干渉しないようにするための機能と言える。
2. Git&GitHubの使い方
2.1. ローカルリポジトリにおける作業フロー(Git)
2.1.1. GitへのGitHubアカウントへの設定
Git BashまたはターミナルへのGitHubのアカウントの登録は以下のコマンドで行う。
git config --global user.name GitHub登録ユーザ名
git config --global user.email Github登録メールアドレス
GitHub登録ユーザ名とGithub登録メールアドレスは各自用意したものを代入してください。
またGitBashやターミナルへGitHubへのユーザ情報を登録できたかどうかの確認は以下のコマンドで行う。
git config --list
2.1.2. ローカルリポジトリの作成
Git管理したいフォルダに「cdコマンド」で移動する。
その後、リポジトリの新規作成は以下コマンドで行う。
これを行うことでローカルリポジトリが作成できる。
.gitファイルが作成される。
git init
2.1.3. ローカルリポジトリでのGitフロー
ステージングエリアへのファイル追加は以下のコマンドで行う。
git add
コマンドでは内容を変更したファイルをステージングエリアに追加します
git add ファイル名
git add .
git commit -m \"コメント\"
コマンドでローカルリポジトリへコミットを行います。
git commit -m \"コメント1行目(概要)\" -m \"\" -m \"コメント3行目(詳細/理由)\"
一般的な概要のコメント(英語)
- add : 機能やファイルの追加
- update : 機能の修正(リファクタリングを含む)
- fix : バグの修正
- remove : ファイルの削除
詳細に管理したい場合のコメント(英語)
- change : 仕様変更
- clean:リファクタリングなど
- upgrade : バージョンアップ
- revert : 変更取り消し
2.1.4. ブランチの切り方と切り替え方
ブランチの作成は以下のコマンドで行います。(ブランチ名なしで現在のブランチを確認可能)
git branch ブランチ名
ブランチの移動は以下コマンドで行います。
git checkout ブランチ名
git switch ブランチ名
git checkout
に-b
を付けるとブランチ作成と切り替えをまとめて実行可能。
2.1.5. リポジトリの状態の確認
git status
2.1.6. コミットした履歴の確認
git log
オプション | 詳細 |
---|---|
–oneline | 1行での表示 |
-p ファイル名 | ファイル差分の表示 |
-n 数字 | 表示数の制限表示 |
2.1.7. ファイルの削除とステージングエリアへの追加
ファイル削除後に以下のコマンドを実行
git rm ファイル名
オプション-r
をつけると完全削除
2.1.8. ファイルの変更差分の確認
git diff
2.1.9. ファイルの状態を直前のバージョンに戻す
git addをする前の状態で戻す場合
git checkout .
git checkout ファイル名
git addをした後の状態で戻す場合
git reset --hard HEAD
git commitをした後に戻す場合(直前にcommitしたものも取り消す)
git reset --hard HEAD~
特定のファイルのみのバージョンを戻す場合
git checkout コミットID ファイル名
2.1.10. ファイルを古いバージョンに戻す
git log
でCommit履歴を確認しコミットIDを取得git checkout
を行うことでIDのCommitバージョンに戻せる
なお、特定のファイルのみバージョン戻す場合は2.1.9項目を参照。
戻したバージョン(以前のバージョン)の編集を行い、そこから最新バージョンにする場合のcommitは以下の通り。
git commit -a -m \"
\" -m \" \" -m \"
\"
2.1.11. Git管理下のフォルダ名を変更する
git mv フォルダ名/ 変更後のフォルダ名/
2.1.12. 既にGit管理化となっているファイルやディレクトリをgit管理化から外す
git rm --cached ファイル名
git rm -r --cached ディレクトリ名
2.2. リモートリポジトリを含めた作業フロー(GitHub)
2.2.1. リモートリポジトリの作成
GitHubにブラウザからアクセスしてリモートリポジトリを用意する。
2.2.2. リモートリポジトリへのプッシュ
初期設定は以下のコマンドを実行する。
git remote add origin \"GitHubURL\"
以下コマンドを実行する。(ローカルリポジトリのブランチ名はこの場合はmaster)
git push -u origin master
2.2.3. リモートリポジトリからプル(ローカルへの反映)
git pull
2.2.4. リモートリポジトリの確認と変更(上書き)方法
リモートリポジトリの確認は以下コマンドまたは.git/config
で確認可能。
git remote -v
リモートリポジトリの変更は以下コマンドより
git remote set-url リモートレポジトリ名(masterなど) 新しいリモートリポジトリのURL
2.2.5. リモートリポジトリの削除
rmで完全削除
git remote rm リモートレポジトリ名
2.2.6. リモートリポジトリからのクローン
git clone リモートリポジトリのURL
2.3. その他のGitコマンド
コマンド | 詳細 | オプション |
---|---|---|
git ls-files | Gitで管理しているファイル一覧の表示 |
3. .gitignoreに関して
.gitignoreではgitで管理したくないファイルを指定できます。
例えば以下のようなものです。
- 自動生成されるファイル
- パスワード・IDなどが記載されるファイル(.env)など
#拡張子ファイルを無視
.拡張子
#指定したファイルの除外
ファイル名
#ディレクトリ以下で除外(特定ファイルの無視)
フォルダ名/