リポジトリを作る
//sample ディレクトリを作成
mkdir sample
//sampleディレクトリに移動
cd sample
//今いるディレクトリをGitリポジトリとして設定
git init
※.gitは隠しファイルなので普段は表示されないが、<Command + Shift + . >で隠しファイルが表示できる。
状況確認
//作業ディレクトリの状態を確認
git status
//リポジトリとファイルの差分をチェック
git diff
//リポジトリとステージの差分をチェック
git diff -staged
コミットする
//指定したファイルをステージする
git add ファイル名
//全てのファイルをステージする
git add .
//コミットメッセージを添えてコミットする(スナップショット)
git commit -m "コミットメッセージをここに書く"
※コミットすると、誰が・いつ・何を変更したが記録されるが、何のために変更したのかわからないため、コミットメッセージにてなぜ変更したのかを書く必要がある。
変更履歴の確認
# 変更履歴の確認
git log
変更をもとに戻す
//ワークツリーの変更を取り消す
git restore ファイル名
//ステージ上げた変更をワークツリーに戻す
git restore -staged ファイル名
チェックアウトでコミットを移動する
//指定したコミットに移動する
git checkout コミットID
フォーク
フォークとは他の人が公開しているリモートリポジトリを自分のリモートリポジトリにコピーすること。
※Github上で操作する。
クローン
クローンとはGithub上でコピーされたリモートリポジトリを自分のパソコンにダウンロードする
[↓Code]ボタンをクリックし、[HTTPS]が選択されていることを確認し、URLをコピーする。
//リモートリポジトリをクローンする
git clone 自分のリモートリポジトリのURL
ブランチを作る
//存在するブランチを一覧表示
git branch
//現在のブランチを元にして、新規ブランチを作成する
git branch ブランチ名
//指定したブランチに移動する
git checkout ブランチ名
//一つのコマンドで新規ブランチを作成して、作成したブランチに移動する
git checkout -b ブランチ名
ブランチを作ってコミットする
//profileブランチを新規作成して、profileブランチに移動する
git checkout -b profile
//member.htmlをステージする
git add member.html
//コミットメッセージを添えてコミットする(スナップショット)
git commit -m "新たに紹介文を追加"
//masterブランチに移動する
git checkout master
ブランチを統合する(マージ)
マージとは本番用のmasterブランチに自分が変更したコードを統合すること。
//マージコミットを作りたいブランチA(master)に移動する
git checkout ブランチA
//マージしたいブランチBを指定してマージする
git merge ブランチB
※先程の例ならば、ブランチAがmaster、ブランチBがprofile
プッシュとは
プッシュとは、ローカルリポジトリで起きた変化をリモートリポジトリに反映すること(アップロード)
//ローカルリポジトリで行った変更を、リモートリポジトリにプッシュする
git push リモートリポジトリ名 ブランチ名
//※リモートリポジトリ名がorigin、ブランチ名がmasterのとき
git push origin master
プルとは
リモートリポジトリで起きた変更を、ローカルリポジトリに反映すること
//プルしてきたいブランチにチェックアウトする
git checkout ブランチ名
//リモートリポジトリ上のコミットを、ローカルリポジトリの現在のブランチに取り込む
git pull リモートリポジトリ名 ブランチ名
//※リモートリポジトリ名がoriginで、ブランチ名がmasterのとき
git pull origin master
コンフリクトの対処法
コンフリクトとは、同じ行に同時に別々の修正がされたときに発生するバグ。
→どちらの修正を採用すればいいのかわからなくなるために、発生する。
コンフリクトした部分を、エディタで直接編集・保存してから、以下のコマンドで操作する。
//修正したファイルをステージする
git add ファイル名
//普通にコミットする
git commit -m "コミットメッセージ"
//コンフリクトの箇所が多すぎて修正が難しい場合、コミット前で荒れた、以下のようにしてマージをキャンセルできる
git merge --abort
プルリクエストとは
プルリクエストとは、自分がした変更をフォークした元のリポジトリに取り込んでもらえるように提案すること。
プルリクエストの目的は、本流のブランチにマージされること。
プルリクエストまでの流れ
1.フォークする
GitHubにて[Fork]ボタンを押して、自分のリモートリポジトリに複製する
2.クローンする
//指定のリポジトリをクローンする
git clone リポジトリURL
//クローンで作成されたディレクトリに移動
cd ディレクトリ名
3.ブランチを作ってコミットする
//ブランチを作ってそのブランチにチェックアウトする
git checkout -b ブランチ名
//コミットする
git add ファイル名
git commit -m "コミットメッセージ"
4.プッシュする
git push origin ブランチ名
5.GitHub上でプルリクエストを作成する
GitHub上で、フォークしてきたリポジトリのトップページを更新すると、画面上部に[Pull repuest]と[Compare]が表示される。
Compareページを開くと、「masterブランチと自分のリポジトリのブランチが比較」と「どの行で、どんな変更があったのか詳細を確認」問題がなければ、[Create Pull request]ボタンをクリック。
6.マージされる
Fork元の作成者が内容を確認し、[Merge pull request]ボタンをクリックするとマージされる
バージョン管理しなくていいファイルを無視する
- OSが自動生成するファイル
- キャッシュ
- 容量が大きすぎるもの
そのようなバージョン管理が必要ないファイルは .gitignore というテキストファイルを使ってGit管理しないように設定できる。
↓除外するファイル名(例)
ファイル・ディレクトリ名 | 説明 |
---|---|
.DS_Store | macOSが自動生成するもの |
Thumbs.db | Windows OSが自動生成するもの |
.sass-cache/ | Saasのキャッシュ。管理が必要ないため、除外する |
*.css.map | Sassのソースマップ。Sassの適用箇所を辿るために出力するもの。管理が必要ないため、除外する |
.gitignoreの書き方
// 自分用のメモファイルを無視する
memo.txt
// .rbcという拡張子がついているファイルを無視
*.rbc
//例外として、text.rbcは無視しない
!test.rbc
//特定のディレクトリ名(config_c)以下を無視
config_c/
//ルートディレクトリ直下にあるものを指定する
//※ルートディレクトリにあるlogというディレクトリ以下を無視するとき
/log/
.gitignoreのコミット
//.gitignoreファイルをステージする
git add .gitignore
//.gitignoreファイルをコミットする
git commit -m "add file to .gitignore"
//.gitignoreに .DS_Storeを追加編集する
echo .DS_Store >> .gitignore
余計なファイルをコミットしてしまいignoreしたいとき
今後の管理から対象のファイルを外すとき
//gitの管理から削除
git rm --cached <ファイル名>
//gitignoreファイル内にそのファイル名を記入
echo '<ファイル名>' >> .gitignore
ファイルの履歴からも消す
git filter -branch -f --index-filter 'git rm --cached -rf --ignore -unmatch <ファイル名>' HEAD