プログラミング

Git操作&コマンド一覧の備忘録〜バージョン管理を学ぶ〜

ある程度Javaの基礎は学んだ私ですが、Git操作が正直わかっておりませんでした。ですので、このGWの期間にどうせなら勉強しちゃおうということで学んだことを記事としてアップすることにしました。

アウトプットすることで定着もしますし、備忘録として使える為この機会に覚えていきます!

今回はめっちゃ長めですが自分のためだけに色々頑張ってみました。なんたってGWは頑張るウィークなので!!(学生時代は勉強三昧だった自称進学校だったので・・・笑)

では、早速内容に入っていきましょう!

Contents
  1. Gitとは
  2. GitHubとは
  3. Gitインストール手順
  4. Gitの初期設定
  5. ターミナル頻出コマンド
  6. ローカルリポジトリの新規作成
  7. Gitリポジトリのコピー作成
  8. ステージングとコミット
  9. 現在の変更状況の確認
  10. 変更したファイルの中身を確認
  11. 変更履歴の確認
  12. ファイルの削除を記録
  13. ファイル名称を変更
  14. リモートリポジトリ(GitHub)を新規追加
  15. リモートリポジトリ(GitHub)へPush
  16. コマンドに別名をつける(エイリアス)
  17. バージョン管理しないファイルを無視する
  18. ファイルへの変更を取り消す
  19. 直前のコミットをやり直す
  20. リモートリポジトリの情報を確認する
  21. リモートリポジトリを新規追加する
  22. リモートリポジトリから情報を取得
  23. リモートリポジトリの変更・削除
  24. ブランチの新規作成
  25. ブランチの一覧表示
  26. ブランチを切り替える
  27. ブランチの変更・削除
  28. プルリクエストを行う
  29. タグの一覧を表示する
  30. 注釈付きタグを作成する
  31. タグのデータを表示する
  32. タグをリモートリポジトリに送信する
  33. 作業を一時避難する
  34. 避難した作業を確認する
  35. 避難した作業を復元する
  36. 避難した作業を削除する
  37. 追記

Gitとは

Gitはファイルのバージョンを管理するのに使います。

いつ、誰が、何を変更したのかが把握できる上、上書きしようとすると警告が出るので安心して開発を進めることが出来ます。

GitHubとは

Gitで行っているファイルの変更履歴やファイルをオンライン上で扱ってくれるサービスです。

同様のサービスにBitbucketもありますが、違いとしては「非公開リポジトリが有料か無料か」というところにあります。Bitbucketは非公開リポジトリが無料なので、2〜3人位でのスモール開発ではGitbucketがおすすめとされています。

GitHub

Gitインストール手順

MacBookの場合はデフォルトでインストール済みのため、下記画像のところからターミナルで操作が可能となります。

git version

と入力することでGitがインストールされているか確認ができます。

Gitの初期設定

GitHubで登録した「ユーザー名」「メールアドレス」と使用する「エディタ」を登録していきます。

ユーザー登録

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

メールアドレス登録

git config  --global user.email "GitHubで登録したメールアドレス"

エディタの登録

git config  --global core.editor "使用するエディタ名  --wait"

設定確認は

git config  --list

と入力することで確認できます。

ターミナル頻出コマンド

cd:ディレクトリを移動
ls:ディレクトリの内容を表示
ls -a:隠しファイルを含めたディレクトリ全内容を表示
mkdir:ディレクトリを新規作成
rm:ファイルを削除
cp:ファイルをコピー
mv:ファイルの移動とファイルの名称変更
cat:ファイルの中身を表示

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

git init

Gitリポジトリのコピー作成

他の人がGitリポジトリに作成したプロジェクトを自分のローカルリポジトリに作成できる

git clone<リポジトリ名>

GitHub(リモートリポジトリ)上に公開されているリポジトリは下記画像のようにしてコピーし、git cloneすることで自分のローカルリポジトリにコピーできます。

GitHub

ステージングとコミット

ステージに変更を追加

ステージング」は、手元の作業場で変更した内容をステージに追加する作業のことです。

git add<ファイル名>
git add<ディレクトリ名>

<全ての変更をステージに追加する場合>

git add .

リポジトリに変更を記録

コミットすることでステージに追加された変更を記録することが出来ます。

git commit

<エディタを起動せずにコミットメッセージを追加する場合>

git commit -m "コミットメッセージ"

<エディタ上で変更内容も確認したい場合>

git commit -v

commitだけでなくaddもする理由

1つのコミットに含まれる修正を1つだけにしてコミットログを分かり易くする為。

例えば、setting.htmlとtop.htmlの2つのファイルで①新機能の追加と②既存機能の編集を行なった際、コミットだけを行うと、複数の機能変更に対して1つのコミットとなってしまう為管理が複雑になってしまいます。

逆に、addしてステージに変更を追加してからコミットを行うと、その機能変更ごとにコミットできる為管理がしやすくなります。

また、作業途中のファイルなどコミットしなくてよいファイルをコミットせずに済みます。

コミットメッセージは分かり易く書こう!!

1行目:変更内容の要約

2行目:空行

3行目:変更した理由

現在の変更状況の確認

変更されたファイルを確認します。

git status

ファイルを変更したら「git add」して、「git status」、「git commit」して「git status」をします。「何のファイルが変更されたかを確認」してからステージングやコミットをする癖をつけていきましょう!

変更したファイルの中身を確認

変更したファイルの中身に関して、変更差分を確認します。

<ステージング前の変更差分を確認>

git diff
git diff <ファイル名>

<ステージング後の変更差分を確認>

git diff  --staged

変更履歴の確認

以前どのような変更があったかを確認します。

git log

<要点だけ1行で表示させる>

git log  --oneline

<特定のファイルだけの変更履歴を表示させる>

git log -p <ファイル名>

<表示するコミット数を制限する>

git log -n <コミット数>

ファイルの削除を記録

Gitにコミットされた記録やワークツリーの記録全てから削除>

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

<ワークツリーには記録を残し、Gitの記録からだけ削除する場合>

git rm -cached<ファイル名>

ファイル名称を変更

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

リモートリポジトリ(GitHub)を新規追加

git remote add origin リモートリポジトリのURL

「git remote add」でURLを登録しておくことで今後「origin」という名前でGitHubリポジトリとやり取りができます。

リモートリポジトリ(GitHub)へPush

ローカルリポジトリの内容をリモートリポジトリに送ることをプッシュと呼びます。

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

(git push origin master)

originは登録したリモートリポジトリのショートカット名です。

GitHub側での操作

1.アクセストークンの生成

GitHubでログイン後下記操作を行います。

Generateしてトークンを発行するとこの次の画面でトークンが表示されますが、一度しか表示されない為これはメモ帳等にコピーしておきましょう。もし、トークンを失くしてももう一度この操作をやり直して発行し直せば大丈夫です。

2.リポジトリを作成

マイページよりリポジトリを作成していきます。

Create repositoryすることで、GitHub上にリポジトリが作成されます。

ターミナル側での操作

GitHub上でリポジトリが作成されると「… or push an existing. repository from the command line」というのがあるのでその下の行にある

git remote add origin https://github.com/~~~~~~~~~~~

という1行をコピーし、ターミナルに貼り付け、実行します。これで登録が完了となります。

また、この後に下記コマンドを実行することで次回以降pushする際に「git push」だけでpushが実行できるようになります。

git push -u origin master

上記コマンドを実行すると、ユーザー名とパスワードが聞かれるので、GitHubで登録したユーザー名と先ほどのアクセストークンを入力します。

プッシュに成功しているとGitHub上で確認ができます。

コマンドに別名をつける(エイリアス)

git config --global alias ci commit

上記の例では、今後コミットする際に「git ci」でコミットができるようになります。

git config」は設定を変更するコマンドで、「–global」はPC全体の設定の変更を行うコマンドになります。

バージョン管理しないファイルを無視する

自動生成されるファイルやパスワードが記載されているファイルはGitの管理から外します。そのためには「.gitigreファイルに指定」します。

touch .gitignore

.gitignoreはデフォルトでは存在していないので、必要に応じて自分で作成する必要があります。

touchコマンドでgitignoreを作成します。

生成方法はとても簡単で、普通のファイルを作成するのと同じ要領です。作成場所は「.git」ファイルがあるディレクトリ(git initしたディレクトリ)です。

.gitignoreファイルの書き方に関しては参考サイトをいくつか貼っておきます。

〜 .gitignoreファイルの書き方 (参考サイト)〜

・Qiita

・開発ブログ

・Gitコマンド虎の巻

ファイルへの変更を取り消す

ワークツリーのファイルの変更を取り消す

ワークツリーのファイルの変更を元の状態に戻したい場合に使用します。

git checkout  --<ファイル名>

 

git checkout  --<ディレクトリ名>

 

<全変更を取り消す場合>

git checkout  -- .

ステージングした変更を取り消す

ステージングされたファイルの変更を元の状態に戻したい場合に使用します。

但し、ステージングされた変更のみを取り消すため、ワークツリーには何も影響を及ぼしません。

git reset HEAD <ファイル名>
git reset HEAD <ディレクトリ名>

<全変更を取り消す場合>

git reset HEAD .

直前のコミットをやり直す

git commit  --amend

Pushした後にこのコマンドを実行してしまうと、Pushされたリモートリポジトリのデータを取り込んだ第三者の人が変更を加えて統合しようとした時に、リモートリポジトリの履歴とその第三者の人のローカルの履歴が異なってしまい統合ができなくなります。

なので、絶対にPushする前の状態でこのコマンドを使用するようにしましょう。

もしPush後にそのコミットをやり直したい場合は、上記コマンドを使用するのではなく、「git commit」コマンドでもう一度新しいコミットを作成して修正するようにしましょう。

リモートリポジトリの情報を確認する

設定しているリモートリポジトリの情報を表示します。

<リモート名のみ表示させる>

git remote

URLまで表示させる>

git remote -v

<詳細情報を表示させる>

git remote show <リモート名>

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

登録したいショートカット名でリモートリポジトリのURLを登録します。

git remote add<リモート名><リモートURL

(例)git remote add practice https://github.com/~~~~~

リモートリポジトリから情報を取得

フェッチ

リモートリポジトリからローカルリポジトリに情報をとってきますが、ワークツリーには反映されません。

git fetch <リモート名><ブランチ名>

マージ

ローカルリポジトリから情報を取ってきて、ワークツリーに反映させます。

git merge <リモート名>/<ブランチ名>

プル

ざっくり「フェッチ+マージ」と同じ意味です。

git pull (※<リモート名>/<ブランチ名>) ※省略可能

今masterブランチにいる状態でリモートリポジトリから別のブランチをpullしてしまうと別ブランチの情報が統合されてしまいファイルがぐちゃぐちゃになってしまうため、なるべく私のような初学者は「フェッチ+マージ」を意識して使いましょう。

リモートリポジトリの変更・削除

リモートリポジトリ名の変更

git remote rename <旧リモート名><新リモート名>

リモートリポジトリの削除

git remote rm <リモート名>

ブランチの新規作成

ブランチを新規作成しますが、ブランチの切り替えまでは行われないので注意しましょう。

git branch <ブランチ名>

ブランチの一覧表示

何のブランチがあるかを確認したいときに使用します。

git branch

<全てのブランチを表示したい場合>

git branch -a

ブランチを切り替える

git checkout <既存ブランチ名>

<ブランチを新規作成して切り替える場合>

git branch -b <新ブランチ名>

ブランチの変更・削除

ブランチ名の変更

自分が作業しているブランチの名前を変更します。

git branch -m <ブランチ名>

ブランチの削除

git branch -d <ブランチ名>

 

上記コマンドは、まだmasterにマージしていない変更が残っている場合そのブランチは削除されない為、安全なコマンドとも呼ばれています。

<強制削除する場合>

こちらのコマンドは、masterにマージされていない変更が残っていたとしても削除したい場合に使用します。

git branch -D <ブランチ名>

プルリクエストを行う

自分の変更したコードをリポジトリに取り込んでもらうよう依頼する機能です。コードレビューをしてもらう過程で生じる作業となります。

ターミナル側でPushした後、GitHub側で操作を行います。

プルリクエストを選んでNew Pul requestを押下します。l

基盤となるブランチをbaseに、プルリクエストするブランチをcompareに設定してcreate pull requestを押します。

するとプルリクエストのタイトルと本文が設定できるので、記入した後create pll resuestボタンを押下するとプルリクエストが作成されます。作成が確認できた後は、コードレビューを依頼したいので、Reviewersからレビュワーを選ぶことでレビュワーにプルリクエストを送信できます。

タグの一覧を表示する

コミットを参照し易くするためにわかりやすい名前を付ける為に使用します。

git tag

<パターンを指定してタグを表示させる場合>

git tag -l "20220501"

注釈付きタグを作成する

mオプションを付けることでエディタを立ち上げずにメッセージが入力できます。

git tag -a<タグ名> -m"<メッセージ>"

タグのデータを表示する

git show <タグ名>

下記情報が表示されます。

タグ付けした人の情報

タグ付けした日時

注釈のメッセージ

コミット

タグをリモートリポジトリに送信する

git push <リモート名><タグ名>

<タグを一斉に送信する場合>

ローカルにあってリモートリポジトリに存在しないタグを一斉に送信します。

git push<リモート名>  --tags 

作業を一時避難する

コミットするまではいっていない作業から、途中で別のブランチで作業する必要が出てきた場合に変更分をstashに一時避難させます。

git stash

避難した作業を確認する

すべての避難した作業の一覧を表示させます。

git stash list

避難した作業を復元する

<最新の避難した作業を復元する場合>

git stash apply

<ステージの状況も復元する場合>

git stash apply  --index

<特定の避難した作業を復元する場合>

git stash apply <スタッシュ名>

(例)git stash apply stash@{1}と入力。git stash listで確認可能です。

最新の避難した作業が番号0となりそこから順に1、2・・・となります。

避難した作業を削除する

<最新の避難した作業を削除する場合>

git stash drop

<特定の避難した作業を削除する場合>

git stash drop <スタッシュ名>

(例)git stash drop stash@{1}と入力。

<避難した全作業を削除する場合>

git stash clear

追記

※2022/9/8追記

ざっと手順だけ追記しておきます。

①Github上でリポジトリを作成する

②下記コマンドを実行してリモートリポジトリを登録する

git remote add origin リポジトリのURL.git

③下記コマンドで登録されているかを確認

git remote -v

④下記のように表示されていればOK

origin  リポジトリのURL.git (fetch)
origin  リポジトリのURL.git (push)

⑤下記コマンドでデフォルトブランチ名にmainを登録

git branch -M main
git push -u origin main

⑤下記コマンドを実行して完了。

git add .
git commit -m "コミットメッセージ"
git push

 

git add .

上記コマンドを実行すると下記のようなエラーが発生することがあります。

error: 'ディレクトリ名' does not have a commit checked out
fatal: adding files failed

このような場合はディレクトリの中にさらに同じ名前のディレクトリが作成されてしまっている可能性があるので、不必要なディレクトリを削除すると解決できます。

ABOUT ME
ヒロ
社会人2年目/23歳/趣味はゲーム・サウナ・サッカー&フットサル・読書・BABYMETALです。 ヒロの人生放浪記1(はてブ版)→https://t-nero.hatenablog.com/