初心者のためのGitとGitHubの使い方

関連記事
初心者のためのGitとGitHub用語集
初心者のためのよく使うLinuxコマンド一覧表

はじめに

「リポジトリ?」「黒画面触ったことないよ」という状態から、GitHubを取りあえず使えるようになるまでの流れをまとめました。

Gitとは

Git(ギット)とは、プログラムソースコードなどの変更履歴を管理するバージョン管理システムのことです。

GitHubとは

GitHub(ギットハブ)は、Gitの仕組みを利用したWebサービスの名称です。GitHubは、GitHub社によって運営されています。GitHubは、Gitのサービスの中で最もユーザーが多く、個人・企業問わず無料で利用できます。無料プランでは、保存したデータを非公開にできませんが、有料プランでは非公開にできます。
※GitHub社は2018年6月にMicrosoftに買収されました。

Gitの特徴

Gitの最大の特徴は「分散型」であることです。「分散型」とは、変更履歴を含む完全なデータを自分のパソコンに複製して、各々がその複製データを編集し、最後に統合する仕組みです。「分散型」の反対は「集中型」です。「集中型」とは、複数人がサーバー上にある1つのデータを共同で編集する仕組みです。

Gitには以下のようなメリットがあります。

  • ファイルの中身を編集してもファイル名を変更する必要がありません。
  • 過去のファイルに戻せます。
  • 様々なファイル形式のデータを扱えます。プログラムソースコードだけでなく、Excelファイル、画像ファイルなどもGitでバージョン管理ができます。
  • Gitで管理できるのは、プログラムのソースコードだけではありません。
  • ネット上でファイルの変更履歴をチームメンバーと共有できます。

GitHubの環境構築

以下のサイトを参考にして、Gitのインストール、Gitの初期設定、GitHub設定、GitHubにSSHの設定をします。

【Windows】Gitの環境構築をしよう! – Progate

GitHubに保存するまでの流れ

  1. ソースコードを書きます。
  2. きりのいいところで、「add」コマンドを使って、「ステージングエリア」に保存します。
  3. 「commit」コマンドで、「ローカルリポジトリ」に保存します。
  4. 「push」コマンドで、「リモートレポジトリ」に保存します。

ローカルリポジトリの作成からプッシュまでの流れ

ローカルリポジトリを作成する

GitHubにあげたいフォルダに移動して、git initコマンドを使って、ローカルリポジトリを新規作成します。initはinitializeの略で初期化という意味です。

今回は Desktop に intro_git フォルダをGitHubにあげたいので、cd コマンドを使って、すでに作成済みの intro_git フォルダ に移動します。

cd Desktop
cd intro_git

dir コマンドで共有したいファイルが入っていることを確認します。

ls

git init コマンドでローカルリポジトリを作成します。

git init
Initialized empty Git repository in C:/Users/xxxx/Desktop/intro_git/.git/

ローカルリポジトリの作成に成功したかを確認します。ls -a コマンドで隠しファイルを含むすべてのファイルを表示します。.gitファイルが表示されれば、ローカルリポジトリの作成に成功しています。

$ ls -a

関連リンク:Git Bashで指定のディレクトリに一気に移動する

ファイルの変更をステージングエリアへ追加する

ファイル指定で追加するときは↓

$ git add ファイル名

ディレクトリのすべてのフォルダ、ファイルを追加するときは↓

$ git add .

ローカルリポジトリにコミットする

git commit と入力すると、エディタのVimが立ち上がります。[i]を入力し、編集モードに切り替えます。キーボード入力が全角入力になっていると編集モードに切り替わらないので要注意です。

$ git commit

1行目にコミットのメッセージを入力します。Vimの場合は[i]を入力して編集モードから抜けて、Escボタンを押し、[:wq] と入力し、Enterボタンを押して保存します。Vimから抜けたいときは、[Esc]キーを押してから、[:q!]を入力します。VSCodeの場合は上書きしてから閉じると、Git Bashに戻れます。

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

Githubの自分のページに移動し、右上の+ボタンを押し、[New repository]を選択します。Repository nameに名前を入力し、Publicを選択し、[Create repository]を押します。

…or push an existing repository from the command line の1行目に表示されているコマンドをコピーします。GitにGithubを登録するコマンドです。

リモートリポジトリにプッシュする

origin以降の「https〜」の内容はGitHubのリポジトリ画面に表示されているURLをつかって、リモートリポジトリに登録します。 git push -u origin master でmasterブランチへPushすると、GithubのユーザーIDとパスワードを求められるので入力します。

  • push
    • ローカルのコードをリモートリポジトリに送る
  • origin
    • リモートリポジトリの保管場所名を省略したもの
  • main
    • ローカルのコードを送りたいブランチ先の名前
$ git push origin main

Githubのページに移動し、リロードします。リモートリポジトリが作成されました。

変更をコミットして、リモートリポジトリにプッシュするまでの流れ

ひとつの変更ごとに、1回コミットするのが原則です。

わかりやすいコミットメッセージの書き方

他のメンバーが見て、何をなぜ変更したのかがわかるようなメッセージにします。以下のフォームに統一して書くと良いでしょう。
1行目:変更内容の要約
2行目:カラ行
3行目:変更した理由

$ git add ファイル名 #ファイルごとにコミット
$ git add . #ドットをつけると全てのファイルをコミットするという意味

ステージングエリアへ追加

ファイルを更新し、保存します。git status と入力すると、変更内容が表示されます。

$ git status
#On branch 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:   first.txt
#
#no changes added to commit (use "git add" and/or "git commit -a")

更新したファイルをステージングエリアに移動します。

$ git add .

git status を入力します。メッセージが緑色になっていれば、ステージングエリアに移動できています。

$ git status
#On branch master
#Changes to be committed:
#  (use "git reset HEAD <file>..." to unstage)
#
#        modified:   first.txt

リポジトリにメッセージをつけてコミット

git commit -v と入力し、Vimを立ち上げます。-v と入力すると、どこを変更したのか見ることができます。
1~3行目にコミットのメッセージを入力します。Escボタンを押し、:wq と入力し、Enterボタンを押して保存します。

$ git commit -v

git logコマンドでコミットが成功したかを確認します。コミットの記録が残っていれば成功です。

$ git log

リモートリポジトリに登録する

git remote add コマンドを使って、「このリモートリポジトリにプッシュするよ」という情報を登録します。

$ git remote add origin https://github.com/ユーザー名/リポジトリ名

git push コマンドを使って、ローカルリポジトリの内容をリモートリポジトリへ送信します。

$ git push origin master #originというリモートリポジトリへmasterブランチを送信するという意味

githubのページに移動し、右上の自分のアイコンを押し、[Your Profile] を選択すると、自分のページが表示されます。URLをコピーします。ポップアップボックスが表示され、パスワードの入力してもうまくいかない場合は、gitの最新版をダウンロードしてください。解消します。

GitHubページでリモートリポジトリに変更履歴が登録されていることを確認する

行を選ぶと行を選んだ状態のURLを生成できます。行を指定した状態で他の誰かにソースコードを共有したいときは、行を選択してから、URLをコピーしましょう。
[Raw]ボタンを押すと、ソースコードの生ファイルを見ることができます。
[Blame]ボタンを押すと、誰が何のために変更したかを見ることができます。

様々な変更をコミットする

ファイルの新規作成

ローカルリポジトリにファイルを追加します。

  1. git status と入力すると、追加したファイルが表示されます。
  2. git add ファイル名 を入力して、ステージングエリアに移動します。
  3. git commit -v を入力して、コミットします。

ファイルの削除

rm ファイル名 と入力すると、ファイルを削除できます。rmはremoveの略です。

  1. ls と入力して、フォルダに先ほど削除したファイルがないことを確認します。
  2. git rm ファイル名 と入力して、削除情報をステージングエリアに追加します。
  3. git commit -v を入力して、コミットします。

複数ファイルの変更

複数のファイルを更新します。今回の例では、1つ目のファイルを変更、2つ目のファイルを削除しました。

  1. git add . と入力して、全てのファイルの変更情報をステージングエリアに追加します。
  2. git commit -v を入力して、コミットします。

現在の状況を確認する

git status で現在のリポジトリの状況がわかります。

nothing to commit, working tree clean:
コミットするものは何もなく、最新のコミットから何も変更されていないという意味。

Changes not staged for commit:
ステージングエリアに上げられていない変更があるという意味。git addでステージングエリアに上げます。

Changes to be committed:
ステージングエリアに上げられていて、コミットすべきファイルがあるという意味。git commitでコミットします。

コミットされた状況を確認する

git log コマンドでリポジトリにコミットされたログを確認します。
git log上で[j]と入力すると、下に移動できます。
git log上で[k]と入力すると、下に移動できます。
git log上で[q]と入力すると、git logを終了できます。

git log --oneline #一行で表示する
git log -p #ファイルの差分を表示する
git log -p index.html #index.htmlファイルの差分を表示する
git log -n 3 #最新のコミット3つまでを表示する
git log --oneline -n 3 #最新のコミット3つまでを一行で表示する

変更差分を確認する

git diff コマンドでファイルの変更差分を確認します。diffはdifferenceの略です。

$ git diff #ローカルリポジトリとステージングとの差分
$ git diff HEAD #ステージングと最新コミットの差分

管理しないファイルをGitの管理から外す

他の人に見られたくないファイルやGitで管理したくないファイルを指定することで、Gitの管理から外すことができます。具体的には自動生成されるファイルや、サーバーのパスワードが記載されているファイルなどがあげられます。
.gitignoreファイルを作ることで、ファイルをGitの管理から外すことができます。

.gitignoreファイルの作り方

拡張子のみでファイル名がない[.gitignore]ファイルは一工夫しないと作れません。以下の手順を踏むと作れます。

  1. テキストファイルgitignore.txtを作成します。
  2. テキストエディタで開き、ルールを追加してから保存して閉じます。
  3. gitignore.txtをローカルリポジトリに移動します。
  4. SHIFTを押しながら移動先のフォルダを右クリックして 「Powershellウィンドウをここで開く」を選択
  5. コマンドに、「ren gitignore.txt .gitignore」を入力して、Enterを押す。
  6. 「gitignore.txt」が「.gitignore」に変更されます。

.gitignoreファイルの書き方

‘# から始まる行はコメントを表します。
指定したファイルを除外する場合は、ファイル名を記載します。
ルートディレクトリを除外する場合は、”/root.html”と記載します。
ディレクトリ以下を除外する場合は、”dir /”と記載すると除外できます。

行頭に「/」があれば、.gitignore が配置されたディレクトリが基準となります。ディレクトリ名やファイル名から行頭がはじまれば、ディレクトリに関係なく、そのファイルをGitの管理から外されます。

# どのディレクトリかを問わず、example.phpを除外
example.php

# .gitignore が置かれたディレクトリ内のexample.phpを除外
/example.php

コミットしてしまったファイルを管理から外す

git rm コマンドを使います。
ローカルリポジトリにはファイルを残しておきたいが、リモートリポジトリからはファイルを削除したい場合、git rm --cached と記載します。

その他のGitコマンド

$ git reset HEAD ファイル名 #もとに戻す
$ git checkout ファイル名 #リモートからローカルへダウンロードする

コメント

タイトルとURLをコピーしました