4
5

Gitの基本操作を作業を例に学ぶ

Last updated at Posted at 2023-12-13
目次
新規ローカルリポジトリを作成してGitHubにアップロードするまで
既存ファイルを変更してリモートリポジトリにプッシュするまで
リモートリポジトリの最新状態をローカルリポジトリに反映する(fetch-merge版)
リモートリポジトリの最新状態をローカルリポジトリに反映する(pull版)
ローカルリポジトリに新しいブランチを作成してリモートリポジトリにプッシュするまで
developブランチ更新してmainブランチに反映するためのプルリクを行う
まだpushしていない直前のコミットメッセージを修正してpushする

前提事項

  • Gitをインストールしていること

新規ローカルリポジトリを作成してGitHubにアップロードするまで

  • リモートリポジトリを作成するので、GitHubにログインしてください。

  • New」を押下してください。

1.png

  • Repository name*」に任意の名前を設定します。今回はGitCliとします。

2.png

警告

  • 外部に公開したくない場合は「Private」を選択してください。

4.png

  • Create repository」を押下してください。

3.png

...or create a new repository on the command line」の内容コピーしてください。

5.png

  • 任意の場所に作業ディレクトリを作成してください。今回はgitcuiとします。
作業ディレクトリの作成
mkdir gitcli
  • 作成した作業ディレクトリに移動してください。
作業ディレクトリに移動
cd gitcli

コピーした内容を順番に実行してください。

GitHubでコピーした内容
echo "# GitCli" >> README.md
  git init
  git add README.md
  git commit -m "first commit"
  git branch -M main
  git remote add origin git@github.com:T-H9703EnAc/GitCli.git
  git push -u origin main

以下のように「README.md」が新規リポジトリに追加されれば成功です。

image.png

既存ファイルを変更してリモートリポジトリにプッシュするまで

  • ローカル環境で任意の方法で、「README.md」に変更を加えます。
README.mdに追記する
echo "README.mdに追記" >> README.md
  • 変更状態を確認します。
変更状態を確認
git diff
実行結果
  • 変更内容は以下のように表示されます。
git diff実行結果
diff --git a/README.md b/README.md
index 44f8ffc..7d0e9fb 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
 # GitCli
  • 変更したファイルをステージングに追加します。今回は「README.me」です。
ステージングに追加
git add README.md
  • 変更した複数のファイルをすべて一度に追加したい場合は、以下のコマンドを実行してください。
ステージングに追加(すべての変更ファイルを追加)
git add .
  • ステージングに追加されているか確認します。
ステージングに追加されているか確認
git status
実行結果
  • ステージング状態は以下のように表示されます。
ステージング状態の確認
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md
  • ステージングしたファイルの変更は、以下のコマンドで確認できます。
ステージングしたファイルの変更確認
git diff --staged
  • コミットを実施します。
コミットを実施
git commit -m "README.mdに内容を追記"
実行結果
  • コミット後のメッセージは、以下のように表示されます。
コミットの結果
[main ba2db7b] README.mdに内容を追記
 1 file changed, 1 insertion(+)
  • プッシュを実施します。
プッシュを実施
git push -u origin main
実行結果
  • プッシュ後のメッセージは、以下のように表示されます。
プッシュ後のメッセージ
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 323 bytes | 161.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:T-H9703EnAc/GitCli.git
   70e94a1..ba2db7b  main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.

以下の画像ように「README.mdに追記」が追加されていたら成功です。

image.png

リモートリポジトリの最新状態をローカルリポジトリに反映する(fetch-merge版)

まずは、リモートリポジトリの「README.me」をGitHubから直接変更します。

  • 編集ボタンを押下します。

6.png

  • 以下の文言を追記し、「Commit changes...」を押下します。
README.meへの追記内容
README.mdに追記(fetch merge)

7.png

  • 以下を「Commit message」を入力し、「Commit changes」を押下します。
Commit messageに入力する内容
README.mdをリモートリポジトリから直接更新

8.png

以下のように表示されれば、リモートリポジトリの更新は完了です。

image.png

次に、ローカル環境にこれを反映します。

  • まずは、現在の状況を確認するためにコミット履歴を確認します。
現在のコミット履歴を確認する
git log --oneline
実行結果
  • コミット履歴のメッセージは、以下のように表示されます。
コミット履歴確認コマンド
ba2db7b (HEAD -> main, origin/main) README.mdに内容を追記
70e94a1 first commit
  • ローカルブランチを更新します。
fetchコマンド
git fetch origin
実行結果
  • フェッチ後のメッセージは、以下のように表示されます。
フェッチの結果
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 732 bytes | 244.00 KiB/s, done.
From github.com:T-H9703EnAc/GitCli
   ba2db7b..04b79dd  main       -> origin/main
  • ローカルブランチととリモートブランチの差分を確認します。
ローカルブランチととリモートブランチの差分を確認するコマンド
git log main..origin/main --oneline
実行結果
  • GitHubで更新した内容が表示されます。
コミット履歴の結果
04b79dd (origin/main) README.mdをリモートリポジトリから直接更新
  • 事前に、まだ作業ディレクトリが更新されていないことを確認するために、「README.md」を確認します。
README.mdの内容を確認
cat README.md
実行結果
  • README.md」はまだ、更新されていません。
README.mdの中身
# GitCli
README.mdに追記
  • 作業ディレクトリを更新します。
mergeコマンド
git merge origin/main
実行結果
  • マージ後のメッセージは、以下のように表示されます。
マージの結果
Updating ba2db7b..04b79dd
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)
  • コミット履歴を確認します。
現在のコミット履歴を確認する
git log --oneline
実行結果
  • コミット履歴が追加されています。
コミット履歴確認コマンド
04b79dd (HEAD -> main, origin/main) README.mdをリモートリポジトリから直接更新
ba2db7b README.mdに内容を追記
70e94a1 first commit
  • README.md」を確認します。
README.mdの内容を確認
cat README.md
実行結果
  • README.md」は、更新されます。
README.mdの中身
# GitCli
README.mdに追記
README.mdに追記(fetch merge)

リモートリポジトリの最新状態をローカルリポジトリに反映する(pull版)

  • fetch-merge版と同じようにGitHubで直接リモートリポジトリの「README.me」の内容を更新してください。
README.meへの追記内容
README.mdに追記(pull)
Commit messageに入力する内容
README.mdをリモートリポジトリから直接更新2

image.png

  • 更新前のコミット履歴を確認します。
現在のコミット履歴を確認する
git log --oneline
実行結果
  • コミット履歴が追加されています。
コミット履歴確認コマンド
04b79dd (HEAD -> main, origin/main) README.mdをリモートリポジトリから直接更新
ba2db7b README.mdに内容を追記
70e94a1 first commit
  • 更新前の「README.md」を確認します。
README.mdの内容を確認
cat README.md
実行結果
  • README.md」は、更新されます。
README.mdの中身
# GitCli
README.mdに追記
README.mdに追記(fetch merge)
  • ローカルリポジトリと作業ディレクトリを更新します。
pullコマンド
git pull origin main
実行結果
  • プル後のメッセージは、以下のように表示されます。
プルの結果
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 736 bytes | 245.00 KiB/s, done.
From github.com:T-H9703EnAc/GitCli
 * branch            main       -> FETCH_HEAD
   04b79dd..fa6563e  main       -> origin/main
Updating 04b79dd..fa6563e
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)
  • 更新後のコミット履歴を確認します。
現在のコミット履歴を確認する
git log --oneline
実行結果
  • コミット履歴が追加されています。
コミット履歴確認コマンド
fa6563e (HEAD -> main, origin/main) README.mdをリモートリポジトリから直接更新2
04b79dd README.mdをリモートリポジトリから直接更新
ba2db7b README.mdに内容を追記
70e94a1 first commit
  • 更新後の「README.md」を確認します。
README.mdの内容を確認
cat README.md
実行結果
  • README.md」は、更新されます。
README.mdの中身
# GitCli
README.mdに追記
README.mdに追記(fetch merge)
README.mdに追記(pull)

ローカルリポジトリに新しいブランチを作成してリモートリポジトリにプッシュするまで

  • 現在のブランチを確認します。
現在のブランチを確認
git branch
実行結果
  • main」ブランチと確認できます。
ブランチ確認結果
* main
  • 新規ブランチを作成して、そのブランチに切り替えます。ブランチ名は「develop」とします。
新規ブランチを作成して、そのブランチに切り替える
git checkout -b develop
実行結果
  • develop」ブランチを作成して、切り替えています。
新規ブランチ作成結果
Switched to a new branch 'develop'
  • 再度、現在のブランチを確認します。
現在のブランチを確認
git branch
実行結果
  • develop」ブランチと確認できます。
ブランチ確認結果
* develop
  main
  • 特に何も更新せず、一旦リモートリポジトリにプッシュします。
プッシュを実施
git push origin develop
実行結果
  • プッシュ後のメッセージは、以下のように表示されます。
push結果
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'develop' on GitHub by visiting:
remote:      https://github.com/T-H9703EnAc/GitCli/pull/new/develop
remote:
To github.com:T-H9703EnAc/GitCli.git
 * [new branch]      develop -> develop
  • GitHubを確認すると以下のように「develop」ブランチが追加されています。

9.png

developブランチ更新してmainブランチに反映するためのプルリクを行う

  • ブランチが「develop」であることを確認します。
現在のブランチを確認
git branch
実行結果
  • develop」ブランチと確認できます。
ブランチ確認結果
* develop
  main
  • もし、「develop」ブランチ出ない場合は、以下のコマンドで切り替えます。
ブランチ切り替え
git checkout develop
  • develop」ブランチで、「README.md」に変更を加えます。
README.mdに追記する
echo "README.mdに追記(プルリク)" >> README.md
  • 変更状態を確認します。
変更状態を確認
git diff
実行結果
  • 変更内容は以下のように表示されます。
ブランチ確認結果
diff --git a/README.md b/README.md
index d610b05..67dad33 100644
--- a/README.md
+++ b/README.md
@@ -2,3 +2,4 @@
 README.mdに追記
 README.mdに追記(fetch merge)
 README.mdに追記(pull)
+README.mdに追記(プルリク)
  • 変更したファイルをステージングに追加します。
ステージングに追加
git add README.md
  • ステージングに追加されているか確認します。
ステージングに追加されているか確認
git status
実行結果
  • ステージング状態は以下のように表示されます。
ステージング状態の確認
On branch develop
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md
  • コミットを実施します。
コミットを実施
git commit -m "README.mdに内容を追記(プルリク)"
実行結果
  • コミット後のメッセージは、以下のように表示されます。
コミットの結果
[develop 92e2373] README.mdに内容を追記(プルリク)
 1 file changed, 1 insertion(+)
  • プッシュを実施します。
プッシュを実施
git push -u origin develop
実行結果
  • プッシュ後のメッセージは、以下のように表示されます。
プッシュ後のメッセージ
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 368 bytes | 184.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:T-H9703EnAc/GitCli.git
   fa6563e..92e2373  develop -> develop
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
  • GitHubを確認すると「main」ブランチは更新されていません。

10.png

  • develop」ブランチは更新されています。

11.png

プルリク」を実施します。

  • Pull requests」を押下します。

12.png

  • NEW pull request」を押下します。

13.png

  • プルダウンから「base: main」、「compare: develop」を選択します。
  • base: マージ先(変更させたいブランチ)
  • compare: マージ元(自分が変更したブランチ)

14.png

  • 変更内容を確認したら、「Create pull request」を押下します。

15.png

  • Add a title(タイトル)」と「Add a description(説明)」を記載したら、「Create pull request」を押下します。

16.png

  • 以下のように表示されたら、プルリクは成功です。

image.png

  • Merge pull request」を押下します。

本来は、レビュアーがコードレビューを行い、問題がなければ「Merge pull request」を実施します。

17.png

  • Confirm merge」を押下します。

18.png

  • 以下のように「Pull request successfully merged and closed」と表示されれば成功です。

19.png

  • main」ブランチを確認すると、変更内容が反映されていることが確認できます。

20.png

  • ローカルブランチを「main」ブランチに変更します。
mainブランチに変更する
 git checkout main
実行結果
  • mainブランチ変更のメッセージは、以下のように表示されます。
mainブランチ変更のメッセージ
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
  • プルを実施します。
プルを実施
git pull origin main
実行結果
  • プル後のメッセージは、以下のように表示されます。
プル後のメッセージ
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (1/1), 684 bytes | 171.00 KiB/s, done.
From github.com:T-H9703EnAc/GitCli
 * branch            main       -> FETCH_HEAD
   fa6563e..04552c0  main       -> origin/main
Updating fa6563e..04552c0
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)
  • ファイル内容を確認します。
ファイル内容を確認
cat README.md
実行結果
  • ローカルリポジトリもリモートリポジトリ同様、「develop」ブランチの内容が「main」ブランチに反映されています。
ファイル内容
# GitCli
README.mdに追記
README.mdに追記(fetch merge)
README.mdに追記(pull)
README.mdに追記(プルリク)

まだpushしていない直前のコミットメッセージを修正してpushする

  • README.md」に変更を加えます。
README.mdに追記する
echo "README.mdに追記(コミットメッセージ修正)" >> README.md
  • 変更状態を確認します。
実行結果
  • 変更内容は以下のように表示されます。
ブランチ確認結果
diff --git a/README.md b/README.md
index 67dad33..e626677 100644
--- a/README.md
+++ b/README.md
@@ -3,3 +3,4 @@ README.mdに追記
 README.mdに追記(fetch merge)
 README.mdに追記(pull)
 README.mdに追記(プルリク)
+README.mdに追記(コミットメッセージ修正)
  • 変更したファイルをステージングに追加します。
ステージングに追加
git add README.md
  • ステージングに追加されているか確認します。
ステージングに追加されているか確認
git status
実行結果
  • ステージング状態は以下のように表示されます。
ステージング状態の確認
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md
  • を間違えたコミットメッセージでコミットを実施します。
間違えたコミットメッセージでコミットを実施
git commit -m "README.mdに内容を追記(コミットメッセージ修正)_間違い"
実行結果
  • コミット後のメッセージは、以下のように表示されます。
コミットの結果
[main 736fe07] README.mdに内容を追記(コミットメッセージ修正)_間違い
 1 file changed, 1 insertion(+)
  • 直前のコミットメッセージを確認します。
直前のコミットメッセージを確認
git log -1 --oneline
実行結果
  • 直前のコミットメッセージは、以下のように表示されます。
コミットの結果
736fe07 (HEAD -> main) README.mdに内容を追記(コミットメッセージ修正)_間違い
  • コミットメッセージを修正します。
コミットメッセージを修正する
git commit --amend
  • 以下の画像のように、テキストエディタが開くので、メッセージを修正します。

image.png

  • メッセージを以下のように修正します。
修正後コミットメッセージ
README.mdに内容を追記(コミットメッセージ修正)
  • 添付画像のように開いたテキストエディタがNanoの場合は、「Ctrl + O(オー)」を押下します。

  • Enter」で保存します。

  • Ctrl + X」でエディタを閉じます

実行結果
  • コミットメッセージ修正後は、以下のように表示されます。
コミットメッセージ修正後の結果
[main c441272] README.mdに内容を追記(コミットメッセージ修正)
 Date: Tue Dec 19 01:05:53 2023 +0900
 1 file changed, 1 insertion(+)
  • コミットメッセージのログを確認します。
git log --oneline
実行結果
  • コミットメッセージのログは、以下のように表示されます。
コミットメッセージのログ確認結果
c441272 (HEAD -> main) README.mdに内容を追記(コミットメッセージ修正)
04552c0 (origin/main) Merge pull request #1 from T-H9703EnAc/develop
92e2373 (origin/develop, develop) README.mdに内容を追記(プルリク)
fa6563e README.mdをリモートリポジトリから直接更新2
04b79dd README.mdをリモートリポジトリから直接更新
ba2db7b README.mdに内容を追記
70e94a1 first commit
  • プッシュを実施します。
プッシュを実施
git push -u origin main
実行結果
  • プッシュ後のメッセージは、以下のように表示されます。
プッシュ後のメッセージ
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 415 bytes | 415.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:T-H9703EnAc/GitCli.git
   04552c0..c441272  main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.

  • リモートのコミットの履歴も正常であることが確認できます。

image.png

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5