GitHubのリポジトリにデータを保存・登録する流れ
$ git init
$ touch README.txt
$ git add README.txt
$ git commit -m 'first commit'
$ git branch -M main
$ git remote add origin リモートリポジトリのアクセス先
$ git push -u origin mainGitでよく使うコマンド
git add
| コマンド | 説明 |
| git add ファイル名・ディレクトリ名 | 指定したファイル若しくはディレクトリを追加 |
| git add . | カレントディレクトリ以下全てを追加 |
git commit
| コマンド | 説明 |
| git commit | コミットする |
| git commit -m ‘メッセージ’ | 端的に1行のメッセージ付きのコミットをする |
| git commit -v | 複数行のメッセージ付きのコミットをする |
git remote
| コマンド | 説明 |
| git remote | 設定しているリモートリポジトリの名前(originなど) |
| git remote -v | 設定しているリモートリポジトリのURL |
| git remote add リモート名 リモートリポジトリのアクセス先 | リモートリポジトリの新規追加 |
| git remote rm リモート名 | リモートの削除 |
| git remote rename 旧リモート名 新リモート名 | リモート名の変更 |
gitでリモートリポジトリを追加する際に、下記のコマンドを入力します。
$ git remote add origin https://github.com/test01/test01.git
$ git remote add hoge https://github.com/test02/test02.git「https://github.com/test01/test01.git」というリモートリポジトリに対して、「origin」という名前を設定しています。
名前を設定することによって、pushやpullの際に、毎回リモートリポジトリのアクセスURLを入力しないようにするためです。
更に、リモートリポジトリを追加することができ、名前はそれぞれに対応して設定します。
複数のリモートリポジトリで作業している際に、分からなくなった場合は、「git remote -v」コマンドを入力すると、現在の登録しているリモートリポジトリの確認することができます。
hoge https://github.com/test02/test02.git (fetch)
hoge https://github.com/test02/test02.git (push)
origin https://github.com/test01/test01.git (fetch)
origin https://github.com/test01/test01.git (push)
git push
| コマンド | 説明 |
| git push リモート名 ブランチ名 | リモートリポジトリのブランチ履歴を更新する |
| git push –delete リモート名 ブランチ名 | リモートリポジトリのブランチを削除する |
| git push リモート名 タグ名 | リモートリポジトリに指定したタグを更新する |
| git push リモート名 -tags | リモートリポジトリの全てのタグを更新する |
git branch
| コマンド | 説明 |
| git branch | ローカルブランチの一覧 |
| git branch -a | ローカルブランチとリモート追跡ブランチの一覧 |
| git branch -m ブランチ名 | ブランチ名の変更 |
| git branch -d ブランチ名 | ブランチの削除(masterにmergeされていない場合は、削除されない) |
git switch
| コマンド | 説明 |
| git switch 既存のブランチ名 | 既存のブランチへの切り替え |
| git switch -c 新規ブランチ名 | 新規ブランチを差くせして、切り替える |
git merge
| コマンド | 説明 |
| git merge ブランチ名 | 現在のブランチに指定したブランチを統合する |
| git merge リモート名/ブランチ名 | 現在のブランチに指定したリモートリポジトリのブランチを統合する |
3種類のmerge

1つ目は、Fast Foward(ファストフォワード、早送りになるマージ)です。
Fast Fowardとは、ブランチが枝分かれして、マージコミットが作成することがなく、ポインタを指定したブランチに合わせることです。
2つ目は、Auto Merge(オートマージ、基本的なマージ)です。
Auto Mergeとは、それぞれのブランチで開発していた場合に、統合することでマージコミットという新しいコミットを作成するマージです。
Auto Mergeの特徴として、親コミットを2つ持っていることです。
3つ目は、コンフリクトです。
コンフリクトとは、「複数人が同じファイルの同じ箇所を変更した場合に、どの記述を優先したらいいか分からない状態」のことです。
git rm
| コマンド | 説明 |
| git rm ファイル名 | ファイルの削除 |
| git rm -r ディレクトリ名 | ディレクトリの削除 |
| git rm –cached ファイル名 | git上でのみファイルの削除 ※ワークツリーにファイルを残っている |
ワークツリー(作業環境)でファイルを削除しても、gitでは削除されません。
gitでも削除するには「git rm」コマンドが必要になります。
「git rm –cached」コマンドは、git上でのみファイルを削除して、ワークツリーではファイルが残っている状態になります。
git mv
| コマンド | 説明 |
| git mv ファイル名 移動先ディレクトリ名 | ファイルの移動 |
| git rm ファイル名 新規ファイル名 | ファイル名の変更 |
git status
| コマンド | 説明 |
| git status | ワークツリーとステージエリアとリポジトリの変更状況 |
表示形式
git addされていないファイルがある場合は、下記が表示される。
Changes not staged for commit:
modified: index.html
作業ディレクトリ内で変更されたけれどもまだステージされていないという意味です。
git commitされていないファイルがある場合は、下記が表示されます。
Changes to be committed:
modified: index.html
コミットされるべき変更があるという意味です。
modifiedとは修正されたという意味で、修正ファイルを提示してくれます。
git checkout
| コマンド | 説明 |
| git checkout –ファイル名 | ファイルの変更の取り消し |
| git checkout –フォルダ名 | フォルダの変更の取り消し |
| git checkout — . | 全ファイルの変更の取り消し |
checkoutコマンドはファイルとブランチの両方に使えますので、名前が同一だった場合にファイルを操作をしていると判別するために、「–」を入力します。
「.(ピリオド)」は全ファイルを意味します。
git log
| コマンド | 説明 |
| git log | コミットの変更履歴を表示 |
| git log –oneline | コミットの変更履歴を1行で表示 |
表示形式
git logをした場合には、コミットIDとGitユーザー名、Gitメールアドレス、日付、混みっとメッセージなどの情報が、下記のような形式で表示されます。
commit 8a0ccf183efb4548f286d756d733875cdb01c89b
Author: githunb git01234 git01234@gmail.com
Date: Mon Aug 22 08:34:24 2022 +0900
git pull
| コマンド | 説明 |
| git pull リモート名 ブランチ名 | リモートリポジトリから最新の状態をローカルリポジトリに反映する |
| git pull –rebase リモート名 ブランチ名 | merge型ではなく、rebase型で情報を反映する |
全てのpullをrebase型にする場合は、下記コマンドで設定が可能です。
$ git config --global pull.rebase truegit rebase
| コマンド | 説明 |
| git rebase ブランチ名 | 別々のブランチで伸ばしていた開発コミットを繋げ直す |
git tag
| コマンド | 説明 |
| git tag タグ名 | オプションなしのタグの作成(軽量版タグ)を作成 |
| git tag タグ名 コミット名 | 指定したコミットにタグの作成 |
| git tag -a タグ名 -m メッセージ | 注釈付きでタグの作成 |
下記の様に日付でタグの作成をすると、いつリリースしたかが分かりやすくなり、いつでも修正を戻すことができます。
$ git tag -a 20220707_01 -m version 20220707_01git stash
| コマンド | 説明 |
| git stash | コミットしていない変更を退避する |
| git stash list | 退避した作業を一覧で確認する |
| git stash apply | 最新の退避した作業(ワークツリーのみ)の復元 |
| git stash apply –index | ステージングの状況も復元 |
| git stash apply スタッシュ名 | 指定したスタッシュの復元 |
| git stash drop | 最新の退避した作業の削除 |
| git stash drop スタッシュ名 | 指定したスタッシュの削除 |
| git stash drop clear | 全ての退避した作業の削除 |

stashは、ワークツリーやステージングで変更したファイルを一時的に退避させるコマンドです。
「作業が途中の状態でコミットはしたくないけど、別のブランチで作業しないといけいない」という状況の時に使います。
HEADを用いたコミットの指定

「HEAD」とは、今作業している場所を示すポインタです。
HEADを使うと、親コミットをさかのぼることができます。
「HEAD~(チルダ)数値」で、一番目の親を起点として、数値分さかのぼることができます。
「HEAD^(キャレット)数値」で、マージによって作成されてたマージコミットがある場合に、数値番目の親コミットを指定する
エイリアスの設定でコマンドの省略
Gitのコマンドはエイリアス(別名)を設定することができ、コマンドを省略することができます。
$ git config --global alias.ci commit
$ git config --global alias.st status
$ git config --global alias.br branch
$ git config --global alias.co checkoutcommitコマンドをciに、branchコマンドをbrに省略することができました。
入力する機会が多いコマンドを省略することによって、効率化を図りましょう。
configは設定を変更することができるコマンドで、「–global」はPC全体の設定を変更することができます。
「–global」コマンドを付けない場合は、現在のプロジェクトのみの変更になります。