Git

【初心者】Git・Githubの使い方をまとめました

【初心者】Git・Githubの使い方をまとめました

 

 

  • Git・Githubのことを全く知りません…
  • Git・Githubの解説を読んでもよくわからない…
  • Githubの基本を理解して実務で使えるようになりたい!

本記事では、これらの悩みと疑問を解決していきます。

Git・Githubは開発・コードの管理に必要不可欠なツールです。

Git・Githubの習得タイミングは、早ければ早いほど余計な作業に悩まされなくなり、時間を大幅に節約できるようになります。

本記事では、Git・Githubについて説明した後、実際の開発の基礎となるフローを解説していきます。

*まだ、勉強中のため随時内容を更新します。

 

 

Git・Githubの基本知識

 

簡単にいうと、Gitは開発の際に誰がいつ内容を変更したのかを管理するシステムです。

一般にそのようなシステムを『バージョン管理システム』と言います。

また、管理するだけでなく変更差分を確認したり、過去の状態に戻すこともできます。

実際に、多くのエンジニア・研究者の方々がGitを使用しています。

 

Gitを使用するメリット

 

冒頭でも述べたようにGitのメリットは主に以下の三つです。

  1. どのファイルを、誰が、いつ変更したのかがわかる
  2. 共同作業をしたときに、最新バージョンのファイルを把握しやすい
  3. 削除しても元の状態に戻すことができる

 

リポジトリはGitの基本単位

 

Gitでは、リポジトリという場所で全てのファイルを管理します。

基本的には、一つのプロジェクトに対して、一つのリポジトリを割り当てます。

そのためGitでは、リポジトリ単位で作業を行います。

 

Git・GitHubの用語集

 

まずは、本記事で出てくる用語をまとめます!

突然たくさんの用語が並べられて困惑すると思いますが、下記の用語を一読して本記事を読めば具体的なイメージが湧くと思います!

Git・Githubの用語 用語の説明
リポジトリ
(Repository)
ファイルやディレクトリの状態を記録するGitの基本単位
ローカルリポジトリ
(local Repository)
自分のローカル(パソコン)上に作られるリポジトリ
リモートリポジトリ
(Remote Repository)
Web上に存在し、複数人で管理可能なリポジトリ
クローン
(Clone)
リモートリポジトリの内容をローカルリポジトリに複製
プル
(Pull)
リモートリポジトリの更新内容をローカルリポジトリに取り込む
プッシュ
(Push)
ローカルリポジトリの内容をリモートリポジトリに反映(必ずプルしてから行う)
ワーキングディレクトリ
(Working Directroy)
自分が作業を行なうGitに管理されたディレクトリー(ワーキングツリーとも呼ばれる)
コミット
(Commit)
変更した内容をローカルリポジトリに記録する
ステージ/インデックス
(Stage/Index)
コミットを行う前に更新内容を保存するエリア
アド
(Add)
ワーキングディレクトリの更新内容をステージに移動する作業
ブランチ
(Branch)
プロジェクトを複数の分岐に分ける
マージ
(Merge)
ブランチを元のブランチに結合
コンフリクト
(Conflict)
複数人が同じ部分を変更してしまう現象
プルリクエスト
(Pull Request)
自分の変更内容をマージしてもらうための要求
マスターブランチ
(Master Branch)
プロジェクトのメインとなるブランチ(一般にはmainブランチが使用される)
ヘッド
(HEAD)
現在のブランチの最新コミットの代名詞
フォーク
(fork)
第三者のリモートリポジトリをローカルリポジトリにコピー

 

今回は説明を省略しますが、それ以外でよく使用する用語も紹介しておきます。

リセット
(Reset)
コミット内容を取り消す
リバート
(Revert)
『指定したコミットを削除』というコミットを作成
リベース
(Rebase)
指定したコミットをブランチを変えて再作成する(ログをきれいにすることが主な目的)
スタッシュ
(Stash)
あるブランチでコミットしていない内容を一時的に退避する
フェッチ
(Fetch)
リモートリポジトリの内容を更新内容の取得を行う(ローカルリポジトリの内容とマージを自動で行わないのがプルとの違い)

 

他にも用語はありますが、とりあえずはここで説明した用語を理解しておけば特に問題は生じないです。

 

 

リモートリポジトリを提供してくれるサービス

 

リモートリポジトリを提供してくれるサービスをインストールしていきましょう。

  1. GitHub:ユーザー無制限の公開リポジトリを作成可能(非公開は有料)
  2. Bitbucket : ユーザー5人までの非公開リポジトリを作成可能

 

まだ両方とも登録していない方は、自分の目的に合わせてどちらかを登録してください。

本記事では、Githubを利用して説明していきます。

Gitは基本的には、ターミナル上で操作するものですが、マウス操作可能な(GUI)ソフトがあります。

GUIソフトウェアは、『Source Tree』というソフトウェアが主流です。

しかし、コマンドラインを使用した方が作業効率が高いので、本記事ではコマンドラインを使用した方法を説明します。

 

 

Gitのインストール

 

ターミナル上(Windowsの方はコマンドプロンプト)で以下を入力し、gitのバージョンが出力された方はすでにgitがインストールされているので次に進んでください。

git version

 

インストールがなされていない場合は、下記のボタンからGitをインストールしてください。

gitのインストールはこちら

 

 

リモートリポジトリにユーザ情報の登録

 

まずは、『ローカルリポジトリ』に『リモートリポジトリ』のユーザ情報を設定していきます。

まずは、下記をコマンドライン上に入力してください(usernameにはGithub上で登録したユーザーネームを入力してください)

git config --global user.name "[username]"

 

次に下記もコマンドラインに入力し、email情報を設定しましょう(emailにはGithub上で登録したemailアドレスを入力してください)

git config --global user.email "[email]"

 

『–global』をつけることで、自分のパソコン上のリポジトリ全てに対してユーザを指定することができます。

基本的には以下の形式のコマンドを利用します。

  • git [command] : gitの基本的なコマンド
  • git config –global [attribute][value] : gitの設定ファイルの更新

 

 

Gitの使い方(最も基本的な流れ)

ここからは、Gitの最も基本となる流れを解説してきます。

先に、どのような流れなのかを下記に示します。

  • STEP1
    クローン(Clone)
    ローカルリポジトリをリモートリポジトリにコピーする
  • STEP2
    ブランチ(branch)を切る
    mainブランチで行っても良いが、開発では新しいブランチを作成することが多い(各自でGitを使用する場合はスキップしても良い)
  • STEP3
    ステージ(Stage)
    更新内容をステージに保存
  • STEP4
    コミット(Commit)
    ステージングエリアの内容をローカルリポジトリに保存
  • STEP5
    プル(pull)
    リモートリポジトリの内容をローカルリポジトリに反映
  • STEP6
    プッシュ(Push)
    リモートリポジトリに更新内容を反映する
  • STEP7
    mainブランチにマージ(merge)
    新しく作成したブランチをmainブランチに結合する
  • STEP8
    リモートリポジトリの内容をプル(pull)する
    更新されたローカルリポジトリの内容をローカルリポジトリに反映する
  • STEP9
    不要なブランチを削除
    更新のために作成した新しいブランチが不要になるので削除する

各ステップを以降詳しく説明してきます!

 

準備 : ローカルリポジトリの作成

 

まずは、Github上でリモートリポジトリを作成していきます。

まずは、Githubのアカウントベージにアクセスし、『Repositoried』をクリックしてください。

次に、Repositoriesの中の『new』というボタンがあり、クリックするとリモートリポジトリ作成ページに移動します。

あとは、Repository name等を入力し、『Create repository』をクリックしましょう。

これでローカルリポジトリは作成完了です。

 

STEP1 : クローン(Clone)

 

 

下記をコマンドラインに入力することで、先ほど作成したリモートリポジトリをローカルリポジトリに複製することができます。

git clone [リモートリポジトリのURL]

 

この作業は、クローン(Clone)と呼ばれています。

デフォルトでは、カレントディレクトリにローカルリポジトリが作られます。

下記のコードを入力することでpush先とfetch先の情報を表示することができます。

git remote -v

 

SSH設定をすでに行った方は、ローカルリポジトリ上の『Code』→ 『SSH』に移動し、表示されているKeyをコピーしてgit cloneの後に入力し、実行してください。

 

 

STEP2 : 新しいブランチ(branch)を作成

 

ブランチとは、開発を枝分かれさせた際の一つ一つの枝のことです。

最初は、mianブランチという一つのブランチしかありません。

しかし開発の場面では、mainブランチはプロジェクトの主流となるため、別のブランチで各自が開発を進めます。

一般的に新しいブランチを作成することをブランチを切ると言います。

*各自でGitを使用する場合は、このステップを省略し、mainブランチで作業を進めても良いです。

まずは、下記をコマンドラインに入力し、ワーキングディレクトリ上のブランチを確認しましょう。

git branch

 

『-a』を付けることでリモートリポジトリを含むローカルリポに存在する全てのブランチを表示します。

このとき、*がついているブランチが現状態のブランチを表します。

また、『HEAD』というものも存在し、HEADは現在のブランチの最新コミットを指し示します。

次にコマンドラインに下記を入力し、新しいブランチを作成しましょう。

git branch [branch名]

 

[branch名]には新しく作成するブランチの名前を入力してください。

次に、下記を入力し、指定したブランチに移動しましょう。

git checkout [branch名]

 

下記を入力することで新しいブランチを作成し、同時にそのブランチに移動することができます。

git checkout -b [branch名]

 

 

STEP3 : ステージ(stage)に更新内容を保存

 

まず、変更をコミットするためには、更新内容を一度ステージ(Stage)に上げる必要があります。

ステージ(Stage)は更新内容を保存するため(コミットするための)の待機場だと思ってください。

コミットするためには、更新内容を一時的にステージに上げる必要があります。

適当にファイルを作り、ワーキングディレクトリの内容を更新してみてください。

そして、下記を入力するとワーキングディレクトリやステージにどのような変更内容があるのかを確認することができます。

git status

 

『git status』はgitで変更内容を更新する際に頻繁に使用するので覚えておきましょう。

次に、下記を入力することで更新内容をステージに上げることができます。

git add [更新したファイル名]

 

[更新したファイル名]にワーキングディレクトリで更新したファイル名を入力してください。

カレントディレクトリ上の全てのファイルをstaging areaに追加する場合は、下記を入力してください。

git add .

便利なので覚えておきましょう。

 

 

STEP4 : コミット(commit)

 

次は、staging areaの上げた更新内容をコミットしていきます。

コミットする際は、下記をコマンドラインに入力してください。

git commit -m "commitメッセージ"

 

*Gitでコミットする際は、更新内容が的確に伝わるコミットメッセージを記入しましょう。

もし『-m』を付けずに以下を入力すると、デフォルトでvimエディタが開きます。

git commit

操作方法については『知識0から始めるVim講座』を参考にしてください。

メッセージを入力したら『:wq』と入力することでcommitが完了します。

 

次に進む前に下記を入力し、コミット履歴を確認しましょう。

具体的には下記を入力することでコミットの内容を確認することができます。

git log

 

 

STEP5 : プッシュ(push)する前にプル(pull)を行う

 

共同作業をしていると自分が開発をしている間に他の誰かが、ローカルリポジトリを更新している可能性があります。

そのため、自分の更新内容をリモートリポジトリに反映する(プッシュする)前に必ず、最新のリモートリポジトリの内容をローカルリポジトリに反映する(プルする)様にしましょう。

具体的には下記を入力することでpullすることができます。

git pull origin [branch名]

 

pullが完了したら、今度こそ自分の更新内容をremote repositoryにpushしましょう。

その際に、開発メンバーが、自分がローカルリポジトリで更新しているファイルと同一のファイルを更新している場合があります。

そのような状態を『コンフリクト』といい、競合している部分を処理してプルしましょう。

 

STEP6 : プッシュ(push)を行う

 

次は、現在のブランチ情報をリモートブランチに送信します。

具体的には下記を入力することで現在のブランチの内容をremote repositoryにpushすることができます。

git push origin [branch名]

 

 

STEP7 : mainブランチにマージ(Pull Request)

 

次にリモートリポジトリ上でブランチをマージしていきます。

まずは、pullリクエスト(PR)というマージするためのリクエスをGithub上で出します。

pull requestの作成

『New pull request』をクリックしてください。

pull request作成

上部でマージするブランチを適切に選択したら、タイトルとコメントを入力し、『Create pull request』をクリックしてください。

これで、pull requestの作成は終了です。

実際の開発の場面ではリポジトリの管理者等の第三者がpull requestを承認してマージを許可するかを決定します。

しかし、今回は練習のため各自でpull requestを承認していきます。

まずは、『pull request』というタブをクリックし、下記の画面に移動してください。

『Merge pull request』をクリックしてください。

mergeを承認

適当にメッセージを入力し、『Confirm merge』をクリックしてください。

mergeの成功

この画面が表示されればmergeは終了です。

 

STEP8 : ローカルリポジトリの情報をプルする

 

リモートリポジトリでブランチをマージしたため、ローカルリポジトリにその情報は反映されていません。

そのため、その情報をローカルリポジトリに反映していきます。

まずは、下記を入力してmainブランチに移動しましょう(チェックアウト)

git checkout main

 

次に内容をpullしましょう。

git pull origin main

 

より詳しく説明すると、指定したリモートリポジトリのブランチを今いるブランチにマージするという動作を行っています。

STEP9 : 不要なブランチを削除

 

ブランチが増えてきてしまうと管理が大変なので、ローカルリポジトリ上の不要なブランチを削除しましょう。

まずは、下記を入力しローカルリポジトリ上のブランチを削除しましょう。

git branch -d [不要なブランチ名]

 

*mainブランチにマージしていないブランチは削除できません。

次にローカルリポジトリ上の不要なブランチを削除します。

また、ブランチ名の変更は以下で行うことができます。

git branch -m [変更前のbranch名] [変更後のbranch名]

 

ここまでは、Gitを使用する一連の流れです。

自分のコードのLogを取るために使用する場合は、必ずしもBranchを切って作業する必要性はありません。

すなわち以下の流れで開発を行っても問題ないということです。

  • STEP1
    クローン(Clone)
    ローカルリポジトリをリモートリポジトリにコピーする
  • STEP3
    ステージ(stage)
    更新内容をステージに保存
  • STEP4
    コミット
    ステージの内容をコミット
  • STEP5
    プル(pull)
    リモートリポジトリの内容をローカルリポジトリに反映
  • STEP6
    プッシュ(Push)
    リモートリポジトリに更新内容を反映する

しかし、Branchを切ることで管理がしやすくなることは間違いありません。

 

まとめ

 

今回は、Gitの最も基本となる使用方法を紹介しました。

Gitは使用できるようになると本当に便利です。

早い段階から習得するように努めましょう。

 

ABOUT ME
努力のガリレオ
【運営者】 : 東大で理論物理を研究中(経歴)東京大学, TOEIC950点, NASA留学, カナダ滞在経験有り, 最優秀塾講師賞, オンライン英会話講師試験合格, ブログと独自コンテンツで収益6桁達成 【編集者】: イングリッシュアドバイザーとして勤務中(経歴)中学校教諭一種免許取得[英語],カナダ留学経験あり, TOEIC650点
【必見】オンライン英会話を利用しないのは時代遅れ?

 

 

英語学習でオンライン英会話を利用しないのは、時代遅れです…

 

『スピーキングができないから、オンライン英会話はまだまだ後回し…』と思っている方は大間違いです。

 

最近のオンライン英会話は、教材が豊富で、もはや参考書・問題集は不要になりつつあります…

また、多くのオンライン英会話が最新メソッドを導入して、スピーキングのみならず、リーディング・リスニング・ライティングの能力も上がる教材を導入しています。

さらに、効率的な記憶ツールや学習カウンセリングのサービスが提供されることもあります!!

 

特に初心者の方は、下記の記事で紹介しているオンライン英会話をチェックしてみてください。

 

【東大生が厳選】初心者にオススメなオンライン英会話10選実は、最適なオンライン英会話はユーザーによって異なります。本記事では、複数のオンライン英会話を経験した私が、他社と比較しつつ特徴を明確にして本当にオススメできるオンライン英会話を10個厳選しました。...

 

中には、2週間の無料体験期間を提供しているオンライン英会話もあります。

英語学習が滞っている方や英語学習を習慣化できていない方は無料体験期間で良いので挑戦してみてください。

何事も行動することが大切です。

 

また、多くのオンライン英会話がTOEICやTOEFL等の外部英語試験の対策レッスンを提供してきています。

中には、追加料金なしで、本番さながらの対策や面接対策を行うことができるオンライン英会話もあります。

 

特にTOEIC対策に強いオンライン英会話は下記を参考にしてください。

 

【徹底比較】TOEIC対策に強いオンライン英会話5選|東大生が厳選!オンライン英会話はTOEICのスコアを効率的に上げる最強のツールです。本記事では、TOEICにオンライン英会話が効果的な理由とTOEIC対策に強いオンライン英会話を厳選しました。詳しい内容は記事を参考にしてください。...

 

TOEFL対策に強いオンライン英会話に関しては下記を参考にしてください。

 

【徹底比較】TOEFL対策に強いオンライン英会話5選|東大生が厳選!TOEFL対策にオンライン英会話は有効です。事実、私もTOEFL対策のためにオンライン英会話を使用してTOEFL ibtの4技能、TOEFL itpのスコアを爆上げすることができました。この記事では、私が思うTOEFL対策に最適なオンライン英会話を紹介しました。...