Grow up

生活とプログラミング

Git 基本コマンド

f:id:knkomko:20200921085614p:plain

はじめに

2年前に購入していたUdemyのGit講座を始めました。
www.udemy.com

記事作成時点でプライベートリポジトリが無料で使えるといった変更もありますがGitの仕組みやコマンドの使い方は変わらないと思うので前向きに取り組みます。
jp.techcrunch.com

1. ローカルリポジトリの新規作成
git init

実行すると空のローカルリポジトリが作成される
f:id:knkomko:20200921005639p:plain

ローカルリポジトリには.git ディレクトリ(隠しフォルダ)が作成される
f:id:knkomko:20200921005949p:plain

.git ディレクトリにローカルリポジトリのデータが保存されている
・objects … リポジトリの本体 (ツリーファイル、コミットファイル)
・config … Gitの設定ファイル (インデックスファイル)
f:id:knkomko:20200921010120p:plain

2. Gitリポジトリのコピーを作成
git clone [Git リポジトリ URL]

http://github.com/atom/atom.com のコピーを作成する
f:id:knkomko:20200921011207p:plain

atomのワークツリー、.gitディレクトリが作成されている
f:id:knkomko:20200921011929p:plain

3. ワークツリーの変更をステージに追加
git add .

index.html ファイルを作成して、その変更をステージに追加する
f:id:knkomko:20200921012530p:plain

4. ステージの変更を記録する
git commit

コマンドを実行する
f:id:knkomko:20200921013648p:plain

git のエディタが起動したらコミットメッセージを入力して保存する
f:id:knkomko:20200921013743p:plain

ステージのインデックス情報がリポジトリのツリーに記録される
f:id:knkomko:20200921013850p:plain

5. 変更状況を確認する
git status

ワークツリーにコミットすべき変更がない状況を確認する
f:id:knkomko:20200921071946p:plain

index.html を変更してステージに追記すべき情報が有る状況を確認する
f:id:knkomko:20200921072143p:plain

git add を実行して、コミットすべき情報が有る状況を確認する
f:id:knkomko:20200921072419p:plain

git commit を実行して、コミットすべき変更がない状況を確認する
f:id:knkomko:20200921072515p:plain

6. ワークツリーとステージ間の変更状況を確認する
git diff

index.html の変更した内容を確認する
f:id:knkomko:20200921073019p:plain

ステージに追記後、ワークツリーとステージの間に差が無い事を確認する
f:id:knkomko:20200921073329p:plain

7. ステージとリポジトリ間の変更状況を確認する
git diff --staged

ステージに追加した後の変更状況を確認する
f:id:knkomko:20200921073620p:plain

リポジトリに追記後、ステージとリポジトリの間に差が無い事を確認する
f:id:knkomko:20200921073711p:plain

8. ファイルの変更履歴を確認する
# 全ての変更履歴を表示
git log

f:id:knkomko:20200921074713p:plain

#変更履歴の要点を一行で表示
git log --oneline

f:id:knkomko:20200921074829p:plain

# ファイルの変更差分を表示
git log -p [ファイル名]

f:id:knkomko:20200921075100p:plain

# 表示するコミット数を制限
git log -n [コミット数]

f:id:knkomko:20200921075239p:plain

9. ファイルの削除を記録する
# ワークツリーとリポジトリのファイルを削除
git rm [ファイル名]

ファイルの削除を実行する
f:id:knkomko:20200921080430p:plain

ステージにファイルの削除を実行した、という変更状況が記録されている
f:id:knkomko:20200921080621p:plain

# ワークツリーにファイルは残してリポジトリのファイルを削除
git rm --cashed [ファイル名]

ファイルの削除を実行する
f:id:knkomko:20200921081823p:plain

ステージに削除を実行したことが記録され、リポジトリにファイルが無いため
ワークツリーに残ったindex.htmlがリポジトリに存在しないと表示されている
Chages to committed : コミットされていないステージの変更
Untracked files : リポジトリに存在しないワークツリーのファイル
f:id:knkomko:20200921082705p:plain

10. ファイルの移動を記録する
git mv [旧ファイル名] [新ファイル名]

ファイル名の変更を実行する
f:id:knkomko:20200921083424p:plain

ステージにファイル名の変更を実行した、という変更状況が記録されている
f:id:knkomko:20200921083541p:plain

講座の感想

Gitの仕組みとコマンドを図で説明してもらえるのでわかりやすかったです。
ワークツリー、ステージ、リポジトリの役割を理解する事が重要だと感じました。