2023-12-07に更新

GitHubの操作メモ

読了目安:13分

1. 準備

1-1. インストール

【Git】
Gitのインストールはインターネットで「git for windows」と検索して一番上に出てきたところをクリック
※ https://gitforwindows.org/

【VS Code】
VS Codeのインストールは下記から
https://code.visualstudio.com/download

Gitbashに利用するエディタを登録する。
今回はVS Codeを利用するので、ダウンロード時のパスを記載して登録

git config --global core.editor "'C:\Users\<ユーザ名>\AppData\Local\Programs\Microsoft VS Code\bin\code' --wait"

【treeコマンド】
ホームディレクトリ直下に.bashrcファイルを作成。そのファイルに下記を記載。

alias tree='cmd //c tree //A //F'

GitBashを再起動で反映。

1-2. Gitの初期設定

【ユーザ名登録、確認】

git config --global user.name "<GitHubに登録したユーザ名>"
git config user.name

【emailの登録、確認】

git config --global user.email <GitHubに登録しているEmailアドレス>
git config user.email

【editorの登録、確認】

git config --global core.editor "'C:\Users\<ユーザ名>\AppData\Local\Programs\Microsoft VS Code\bin\code' --wait"
git config core.editor

【登録情報をすべての項目確認】

git config --list

設定ファイルの確認の場合は

pwd
cat ~/.gitconfig

1-3. ローカルリポジトリの作成

1-3-1. プロジェクトを新規作成する場合

GitBashを開き、プロジェクトのディレクトリに移動する。そして、下記コマンドを実行。

$ git init
Initialized empty Git repository in C:/Users/<ユーザ名>/GitHub/<プロジェクト名>/.git/

すると、.gitディレクトリが作成される。

***@DESKTOP-M7K4QV7 MINGW64 ~/test1 (master)
$ ls -al
total 8
drwxr-xr-x 1 toshi 197609 0 Oct 18 19:28 ./
drwxr-xr-x 1 toshi 197609 0 Oct 18 19:28 ../
drwxr-xr-x 1 toshi 197609 0 Oct 18 19:28 .git/

$ ls -al .git
total 11
drwxr-xr-x 1 toshi 197609   0 Oct 18 19:28 ./
drwxr-xr-x 1 toshi 197609   0 Oct 18 19:28 ../
-rw-r--r-- 1 toshi 197609  23 Oct 18 19:28 HEAD
-rw-r--r-- 1 toshi 197609 130 Oct 18 19:28 config
-rw-r--r-- 1 toshi 197609  73 Oct 18 19:28 description
drwxr-xr-x 1 toshi 197609   0 Oct 18 19:28 hooks/
drwxr-xr-x 1 toshi 197609   0 Oct 18 19:28 info/
drwxr-xr-x 1 toshi 197609   0 Oct 18 19:28 objects/
drwxr-xr-x 1 toshi 197609   0 Oct 18 19:28 refs/

1-3-2. 既存プロジェクトをコピーする場合

下記実行することでリモートリポジトリからローカルにワークツリーとローカルリポジトリをコピーされる。

$ git clone <リポジトリ名>

では、実際にやってみる。
まずは、GitHubからコピーしたいRepositoryを選んで、クローンのURLをコピー

[https://github.com/<User.name>/<リポジトリ名>.git](https://github.com/<User.name>/<リポジトリ名>.git)

ローカルに新規にディレクトリを作成して、移動する。

$ pwd
/c/Users/<ユーザ名>/GitHub/keisan_response

さきほどGitHub上でコピーしたURLを張り付ける

$ git clone https://github.com/<ユーザ名>/<リポジトリ名>.git
Cloning into 'keisan_response'...
remote: Enumerating objects: 80, done.
remote: Counting objects: 100% (40/40), done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 80 (delta 15), reused 0 (delta 0), pack-reused 40
Receiving objects: 100% (80/80), 1.30 MiB | 10.49 MiB/s, done.
Resolving deltas: 100% (29/29), done.

2. 基本的なコマンド

2-1. ステージに追加

$ git add <ファイル名>
$ git add <ディレクトリ名>
$ git add .  ←全部追加する場合

2-2. リポジトリへコミット

ステージの内容をスナップショットでリポジトリに記録する場合

$ git commit
$ git commit -m "<メッセージ>"   ←エディタを立ち上げない場合
$ git commit -v          ←ファイルへの変更内容を見てからコミットしたい場合

git commitとターミナルに打つと、エディタが立ち上がるので、変更理由を記載して保存&エディタを閉じる。
そしてターミナルに戻ると、下記のように変更された旨が記載されている。(今回は変更理由を「initial commit」をした」

$ git commit
[master (root-commit) a2605d6] initial commit  ←エディタに記載した変更理由
 1 file changed, 1 insertion(+)    ←1ファイルと1行が追加された旨
 create mode 100644 index.html

2-3. 変更状況を確認する

コマンドはgit statusを打つ。
①ステージのインデックスとワークツリーの情報を比較することで、前回ステージに追加してからローカルで変更した差分が確認できる。
②リポジトリとステージのインデックスを比較することで、前回コミットしてからステージに追加されたファイルの差分を確認できる。

【何も変更が無い場合】

MINGW64 ~/test1 (master)
$ git status
On branch master
nothing to commit, working tree clean

【ワークツリーで編集】
エディタを開いてindex.htmlを編集して保存した後に差分を確認する。

$ git status
On branch master
Changes not staged for commit:  ←ステージに追加されていない変更がある旨が記載されている。
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   index.html  ←変更があったファイル名

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

【ステージに追加】

$ git add index.html
$ git status
On branch master
Changes to be committed:  ←commitすべき変更がある旨が記載されている
  (use "git restore --staged <file>..." to unstage)
        modified:   index.html          ←変更があったファイル名

【commit】

$ git commit
[master 4e3e8ce] git statusコマンドを追記
 1 file changed, 1 insertion(+)

$ git status
On branch master
nothing to commit, working tree clean

commitしたので、commitすべき変更が無い旨が記載されている。

2-4. 変更差分を確認する

2-4-1. 差分確認コマンド

【git add する前の変更分】
ワークツリーとステージのインデックスとの差分

$ git diff
$ git diff <ファイル名>

【git add した後の変更分】
ステージとリポジトリとの差分

$ git diff --staged

2-4-2. 差分確認の実施例

【git addする前の変更差分】
index.htmlファイルをエディタで編集して保存した状態から下記を実行

$ git diff
diff --git a/index.html b/index.html
index 306985e..c99fae3 100644
--- a/index.html
+++ b/index.html
@@ -1,2 +1,3 @@
 <h1>Gitチュートリアル</h1>h1>
 <p>git status</p>
+<p>git diff</p>  ←変更差分

【git addした後の変更分】

$ git add index.html
$ git diff

何も表示されない。git diffコマンドはワークツリーとステージとの差分確認するコマンドだから。
ステージとリポジトリとの差分確認は下記の--stagedオプションをつけて実行する。

$ git diff --staged
diff --git a/index.html b/index.html
index 306985e..c99fae3 100644
--- a/index.html
+++ b/index.html
@@ -1,2 +1,3 @@
 <h1>Gitチュートリアル</h1>h1>
 <p>git status</p>
+<p>git diff</p>   ←変更差分の箇所が記載されている

commitした後にgit diffgit diff --stafedを実行しても何も表示されない

$ git commit
[master 64d26f1] git diffを追記
 1 file changed, 1 insertion(+)

****@DESKTOP-M7K4QV7 MINGW64 ~/test1 (master)
$ git diff

***@DESKTOP-M7K4QV7 MINGW64 ~/test1 (master)
$ git diff --staged

ステージに追加したり、commitしたりする場合は事前に変更差分を確認する癖をつけよう。

2-5. 変更履歴を確認する

2-5-1. 変更履歴確認の基本コマンド

$ git log

#1行で表示する場合
$ git log --oneline

#ファイルの変更差分を表示する
$ git log -p <ファイル名>

#表示するコミット数を制限する
$ git log -n <コミット数>

2-5-2. 変更履歴確認の実施例

$ git log
commit 64d26f180b110c76a8e5647fa6a233f9ab8c0abe (HEAD -> master)
Author: <ユーザ名> <***********@gmail.com>
Date:   Thu Oct 19 00:33:41 2023 +0900

    git diffを追記

commit 4e3e8ce45e3d41e34222613eda7750dec8a850c7
Author: <ユーザ名> <***********@gmail.com>
Date:   Thu Oct 19 00:21:29 2023 +0900

    git statusコマンドを追記

commit a2605d66d64815b94ff3a1d0955cfdf81723b515
Author: <ユーザ名> <***********@gmail.com>
Date:   Wed Oct 18 23:08:43 2023 +0900

    initial commit

2-6. ファイル削除の記録

2-6-1. ファイル削除の基本コマンド

【ファイルごと削除する場合】
commitされたGitから削除されるとともに、ワークツリーのファイルも消える。

$ git rm <ファイル名>
$ git rm -r <ディレクトリ名>

【ファイルを残したい場合】
commitされたGitから削除するが、ワークツリーのファイルは残したい場合には下記を実行する。

$ git rm --cached <ファイル名>

2-6-2. ファイル削除の実行例

2-6-2-1. ファイルごと削除する場合

ommitされたGitから削除されるとともに、ワークツリーのファイルも削除したい場合

【ワークツリー上のファイルを削除する】

$ ls
index.html
$ git rm index.html
rm 'index.html'
$ ls
                            ←ワークツリーから削除されている。
$ git status
On branch master
Changes to be committed:            ←commitすべき情報がある旨
  (use "git restore --staged <file>..." to unstage)
        deleted:    index.html          ←変更差分

削除された情報がステージにあげられている。

【元に戻す方法】
削除されたファイルをもとに戻す方法

$ git reset HEAD index.html
Unstaged changes after reset:
D       index.html

$ ls
                ←ワークツリーから削除されている
$ git status
On branch master
Changes not staged for commit:   ←ステージからも削除されている
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
          deleted:    index.html

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

$ git checkout index.html
Updated 1 path from the index
$ ls
index.html    ←復活
$ git status
On branch master
nothing to commit, working tree clean

2-6-2-2. ファイルを残したい場合

commitされたGitから削除するが、ワークツリーのファイルは残したい場合
【削除する変更をステージに追加する】

$ git rm --cached index.html
rm 'index.html'
$ ls
index.html          ←ワークツリーには存在している
$ git status
On branch master
Changes to be committed:   ←commitする変更がある旨
  (use "git restore --staged <file>..." to unstage)
        deleted:    index.html              ←削除する変更がステージに追加されている

Untracked files:     ←リポジトリに削除されたのでワークツリーに新規ファイル(追跡されていない)ファイルが存在している旨
  (use "git add <file>..." to include in what will be committed)
        index.html

【元に戻す】

$ git reset HEAD index.html

$ git status
On branch master
nothing to commit, working tree clean
$ ls
index.html

2.7. ファイルの移動を記録する

2.7.1 ファイル移動の基本コマンド

$ git mv <旧ファイル> <新ファイル>

2.7.3 ファイル移動の実行例

$ git mv index.html index2.html
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        renamed:    index.html -> index2.html
$ git mv index2.html index.html
$ git status
On branch master
nothing to commit, working tree clean

2.8. GitHubにプッシュ

自分が開発したコードをチームのメンバと共有したいときや、ローカルの内容をGitHubに保存したいときに、commitしてからGitHubにプッシュする。

2.8.1. プッシュする基本コマンド

【リモートリポジトリを新規追加する】

$ git remote add origin <URL>

originというショートカットでurlのリモートリポジトリに登録する、という意味。
これをすることで、毎回URLを記載しなくてもこの名前で登録することが簡単になる。
※originは、リモートリポジトリからクローンしてきた際に元ファイルを慣例的にoriginとされている。

【リモートリポジトリへ送信する】

$ git push <リモート名> <ブランチ名>
$ git push origin master

2.8.2 新規リポジトリ作成

「Settings」 > 「Developer Settings」 > 「Personal access tokens」
から、各種項目に情報を入力するとトークンが発行される。
発行されたトークンはメモする。(流出しないように)

「Your profile」 > 「Repositories」から新規作成
作成されたら、画面に「.. or push an exisiting repository from command line」と記載された欄にあるコマンドをコピーし
GitBashに貼り付け実行する。下記のようになっているはず。

$ git remote add origin <URL>
$ git branch -M main
$ git push -u origin master

2.8.3 バージョイン管理から除外したいファイル

.gitignoreファイルに指定する。
書き方は下記

#ファイル指定
index.html
#ルートディレクトリを指定
/root.html
#ディレクトリ以下を除外
dir /
#/以外の文字列にマッチ
/*/*.css
ツイッターでシェア
みんなに共有、忘れないようにメモ

kawai_mizugorou

社会人2年目.自分用のメモとして使ってます.

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント