むらじゅん風呂具

ITエンジニアとたまに歌手と司会などで活動する村中淳のブログ

gitとGitHubの復習

gitとGitHubってなんやねん?っとなっている人は、 以下のUdemyコースで無料で学べます。

はじめてのGitとGitHub | Udemy

1回やったきりだったので改めて復習。

Git と GitHub

バージョン管理するもの。 「どのファイルの何を」「誰が」「いつ」「何のために」、これらを変更した履歴を残せる。

Gitの仕組み

変更履歴を時系列順に記録する。 また記録を過去にさかのぼることが可能。 記録する際はコメントをつける。

リポジトリ

変更履歴を記録する場所。 Git init コマンドで新規ローカルリポジトリを作成する。

コミット

個人リポジトリに変更履歴を記録。

プッシュ

共有リポジトリに記録する。

個人のPCで作業をする → コミットする → プッシュするという流れが基本。

プル

共有リポジトリの情報をローカルに同期する。

GitHub

Gitリポジトリホスティングサービス。 要はオンライン上でファイルを預かってくれる。

GitHubの特徴

プルリクエストによるコラボレーション。 要は複数人でファイルの管理がしやすくなる。

基本的ワークフロー

  1. 作業するフォルダにてローカルリポジトリを作成 → git init コマンド
  2. ファイルの変更をステージングエリアへ追加 → git add コマンド
  3. ローカルリポジトリにコミット → git commit コマンド
  4. リモートリポジトリ(GitHub)にプッシュ → git push コマンド

ローカルリポジトリの作成

作業するフォルダを作成。作成後、そのフォルダに移動。

git init コマンドにて、ローカルリポジトリを作成する。

$ git init
Initialized empty Git repository in /Users/muranakajun/Desktop/test/.git/

GitHub上で作成したリポジトリを同期

GitHubヘログイン。新しいリポジトリを作成する。

名前を入力、Descriptionは説明文が必要なら入れる。

特に見られても困らなければPublicを選択してクリエイト。

そうすっとこんな画面が出て、今回は既にリポジトリ作成済みなので、

…or push an existing repository from the command line のコマンドを実行。

コマンドを実行するとGitHub上で確認できるようになる。

作成したファイル test をクリックすると中身が見える。

変更をコミットするフロー

  1. ファイル変更する
  2. ステージングエリアへ追加
  3. リポジトリにメッセージを付けてコミット

・git status コマンド

ステータスを見るコマンド。 何も変更がない場合は以下のように表示。

$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

ファイルに変更を加えた後で同じコマンドを打つとこうなる。

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   test

no changes added to commit (use "git add" and/or "git commit -a")

変更加えてると、add使えと出てくれる。 んで、git add コマンドでステージングエリアに追加。

$ git add .

. をつけるとファイル全部ステージングエリアに動かすぞってこと。

ファイル名指定でもおk。

これでステージングエリアに追加されたことになる。

もっかいステータスを確認する。

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   test

んで、コミットする。

$ Git commit -v

オプション v つけると、変更箇所が確認できる。

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
# Your branch is up to date with 'origin/master'.
#
# Changes to be committed:
#       modified:   test
#
# ------------------------ >8 ------------------------
# Do not modify or remove the line above.
# Everything below it will be ignored.
diff --git a/test b/test
index 484096a..db2c4f3 100644
--- a/test
+++ b/test
@@ -1 +1,3 @@
 Gitの練習
+・git add
+・git commit

一番上にメッセージつけて保存。

$ git commit -v
[master 1b72555] add, commitのコマンドを追記
 1 file changed, 2 insertions(+)

完了。

git log コマンドで変更履歴が見れる

$ git log
commit 1b7255522e782000a01f7a141a269bc8b870d129 (HEAD -> master)
Author: github muranaka-jun <tonjiru1013@gmail.com>
Date:   Fri Nov 9 13:08:25 2018 +0900

    add, commitのコマンドを追記
    
    講座の復習

commit 7c00af6d5b1047a1c936ac32b88cd6ec2461cf9d (origin/master)
Author: github muranaka-jun <tonjiru1013@gmail.com>
Date:   Fri Nov 9 11:07:13 2018 +0900

    initial commit

不要なファイルを削除する

ローカルリポジトリにあるファイルを削除する。

$ rm second.txt 

git rm コマンドでステージングエリアにファイル消したことを教える。

$ git rm second.txt
rm 'second.txt'

続いてコミットする。

$ git commit -v
[master 7af9e4f] second.txt 削除
 1 file changed, 1 deletion(-)
 delete mode 100644 second.txt

削除処理完了。

複数ファイルの変更をする

複数ファイルを変更、git add . コマンドを打つ。

$ git add .

んでコミットすればおk。

git diff コマンドでローカルとステージングとの差分を確認する

ファイル内容を追記してgit diff コマンドを打つ。

index 94a1902..86b8721 100644
--- a/test
+++ b/test
@@ -3,3 +3,4 @@ Gitの練習
 ・git commit
 ・git rm
 ・git status
+・git diff

ローカルとステージングの差分を表示。

git diff HEAD コマンドでステージングとコミットの差分を確認する

続いてaddしてから、

ステージングとコミットの差分を見る。

$ git diff HEAD
diff --git a/test b/test
index 94a1902..86b8721 100644
--- a/test
+++ b/test
@@ -3,3 +3,4 @@ Gitの練習
 ・git commit
 ・git rm
 ・git status
+・git diff

ステージングとコミットとの差分を表示。

GitHubにプッシュする

git push コマンドを使って、 今までの変更分をGitHub上にのせる。

$ git push origin master
Enumerating objects: 18, done.
Counting objects: 100% (18/18), done.
Delta compression using up to 4 threads
Compressing objects: 100% (12/12), done.
Writing objects: 100% (16/16), 1.62 KiB | 831.00 KiB/s, done.
Total 16 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), done.
To https://github.com/muranaka-jun/test.git
   7c00af6..37a4b0b  master -> master

GitHub画面上で確認できるようになった。

ひととおり必要そうな部分を復習。