Git使い方
Gitとは
バージョン管理ツール。
自分のパソコン上(ローカルリポジトリ)でバージョンを管理できる。
Githubとは
ローカル環境で作ったソースコードのバージョンをインターネット上で管理できる。
ワーキングディレクトリ
自分が作業している場所。
ステージングエリア
【git add】すると、ワーキングディレクトリの状態がステージングエリアにコピーされる。
ローカルリポジトリ
【git commit】すると、ステージングエリアの状態がローカルリポジトリに保存される。
リモートリポジトリ
【git push】すると、ローカルリポジトリの内容をGithubで作ったリモートリポジトリに保存される。
git init
現在のディレクトリまたは指定したディレクトリに「.git」というリポジトリを構成するディレクトリが作成される。このディレクトリをGitで管理しますよ。ってこと。
git status
「ワーキングディレクトリとステージングエリアの状態の差」と「ステージングエリアとローカルリポジトリの状態の差」を確認できる
よく出てくるstatusの状態
Untracked files:
Gitで管理していないファイルがありますよ。
→git addしてくださいね。
- 「new file:」 新しいファイルが作られた
- 「modified:」ファイル内容に変更がある
Changes to be committed:
コミットすべき変更点がありますよ。
→git commitしてくださいね。
nothing to commit, working tree clean
コミットも必要ないし、ワークツリーが綺麗ですね。
Changes not staged for commit
ステージングエリアに登録されてない変更がありますよ。
→git addしてくださいね。
git add
ファイルをステージングエリアに登録する
# file01.txtを追加
git add file01.txt
# 拡張子が「.txt」のもの全てを追加
git add *.txt
# 全てのファイルを追加
git add .
git commit
ステージングエリアに登録された変更をローカルリポジトリに保存する。
「コミット」と言う単位でバージョンの情報が管理されている。
# commitする
git commit -m "initial commit"
# addとcommitをまとめてする
git commit -a -m "add and commit at the same time"
git commit -am "add and commit at the same time"
git diff
ファイルの内容の差分を確認できる
# ワーキングディレクトリとステージングエリアの差を確認
git diff
# ステージングエリアとローカルリポジトリの差を確認
git diff --staged
git restore
変更を取り消すことができる
# ステージングエリアの内容でワーキングディレクトリを置き換える
git restore file01.txt
# ローカルリポジトリの内容でステージングエリアを置き換える
git restore --staged file01.txt
git rm
ファイルを削除できる
# ワーキングディレクトリとステージングエリアのファイルを削除
git rm
# ステージングエリアのファイルを削除
git rm --cached fileB.txt
git mv
ファイル名の変更、ファイルの移動ができる
# ワーキングディレクトリとステージングエリアのファイルを
git mv
git log
リポジトリの変更履歴(コミット)を表示する
# (コミットIDの始め7桁) (コミットメッセージ)
git log --oneline
# 全て見る
git log --all
# ブランチの分岐を視覚化する
git log --graph
# 変更を見ることができる
git log --patch
# 最新のコミット3つを見ることができる
git log -3
# authorで履歴を検索
git log --author="username"
# 日付で履歴を検索
git log --after="2020-12-24"
# コミットメッセージで履歴を検索
git log --grep="キーワード"
# fileA.txtに加えられた履歴を検索
git log fileA.txt
git show
# コミットIDが「f5e4644」のものを表示
git show f5e4644
# 今の位置から2つ前のコミットを表示
git show HEAD~2
git blame
# 「fileA.txt」に誰が変更を加えたのか表示
git blame fileA.txt
git remote add origin <URLFROMGITHUB>
リモートリポジトリを設定
git branch
ブランチを表示したり、作ったりできる。
# 今ある全てのブランチを表示する
git branch
# ブランチを作れる
git branch (ブランチ名)
git switch
# ブランチを切り替える
git switch (ブランチ名)
# ブランチの作成と切り替え
git switch -C (ブランチ名)
git merge
マージする
git merge (ブランチ名)
ファストフォワーフォマージ
分岐が1本の時、ブランチの最新の位置にheadが移動する
3ウェイマージ
分岐が2本の時、ブランチを統合する
スカッシュ
分岐が2本の時、片方のブランチBの内容をブランチAのコミットとする
リベース
ブランチのベース位置を変える
Github
git fetch
# リモートリポジトリのコミットをローカルリポジトリに取り込む。
# 取り込んだらmergeする必要がある。
git fetch origin
git pull
# fetch + merge
git pull
# fetch + rebase
git pull --rebase
git push
# ローカルリポジトリのコミットをリモートリポジトリに取り込む
git push (プッシュ先のリモートリポジトリ名) (プッシュしたいブランチ名)