【初心者】Git・Githubの使い方をまとめました
- Git・Githubのことを全く知りません…
- Git・Githubの解説を読んでもよくわからない…
- Githubの基本を理解して実務で使えるようになりたい!
本記事では、これらの悩みと疑問を解決していきます。
Git・Githubは開発・コードの管理に必要不可欠なツールです。
Git・Githubの習得タイミングは、早ければ早いほど余計な作業に悩まされなくなり、時間を大幅に節約できるようになります。
本記事では、Git・Githubについて説明した後、実際の開発の基礎となるフローを解説していきます。
*まだ、勉強中のため随時内容を更新します。
Git・Githubの基本知識
簡単にいうと、Gitは開発の際に誰がいつ内容を変更したのかを管理するシステムです。
一般にそのようなシステムを『バージョン管理システム』と言います。
また、管理するだけでなく変更差分を確認したり、過去の状態に戻すこともできます。
今やエンジニアや研究者にとって必須のツールです!
Gitを使用するメリット
冒頭でも述べたようにGitのメリットは主に以下の三つです。
- どのファイルを、誰が、いつ変更したのかがわかる
- 共同作業をしたときに、最新バージョンのファイルを把握しやすい
- 削除しても元の状態に戻すことができる
リポジトリは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) |
リモートリポジトリの内容を更新内容の取得を行う(ローカルリポジトリの内容とマージを自動で行わないのがプルとの違い) |
他にも用語はありますが、とりあえずはここで説明した用語を理解しておけば特に問題は生じないです。
リモートリポジトリを提供してくれるサービス
リモートリポジトリを提供してくれるサービスをインストールしていきましょう。
- GitHub:ユーザー無制限の公開リポジトリを作成可能(非公開は有料)
- Bitbucket : ユーザー5人までの非公開リポジトリを作成可能
まだ両方とも登録していない方は、自分の目的に合わせてどちらかを登録してください。
本記事では、主にGithubをメインに説明していきます!
Gitは基本的には、ターミナル上で操作するものですが、マウス操作可能な(GUI)ソフトがあります。
GUIソフトウェアは、『Source Tree』というソフトウェアが主流です。
しかし、コマンドラインを使用した方が作業効率が高く汎用性が高いので、本記事ではコマンドラインを使用した方法を説明します。
Gitのインストール
ターミナル上(Windowsの方はコマンドプロンプト)で以下を入力し、gitのバージョンが出力された方はすでにgitがインストールされているので次に進んでください。
git version
インストールがなされていない場合は、下記のボタンからGitをインストールしてください。
リモートリポジトリにユーザ情報の登録
まずは、『ローカルリポジトリ』に『リモートリポジトリ』のユーザ情報を設定していきます。
まずは、下記をコマンドライン上に入力してください(usernameにはGithub上で登録したユーザーネームを入力してください)
git config --global user.name "[username]"
次に下記もコマンドラインに入力し、email情報を設定しましょう(emailにはGithub上で登録したemailアドレスを入力してください)
git config --global user.email "[email]"
『–global』をつけることで、自分のパソコン上のリポジトリ全てに対してユーザを指定することができます。
また、設定した内容を確認したい時は以下を実行して確認することができます。
- Username :
git config --global user.name
- Email :
git config --global user.email
基本的には以下のコマンドを使用します。
- git [command] : gitの基本的なコマンド
- git config –global [attribute][value] : gitの設定ファイルの更新
Gitの使い方|最も基本的な流れ
ここからは、Gitの最も基本となる流れを解説してきます。
先に、どのような流れなのかを下記に示します。
-
STEP01クローン(Clone)ローカルリポジトリをリモートリポジトリにコピーする
-
STEP02プル(pull)リモートリポジトリの内容をローカルリポジトリに反映して、最新の状態する(クローンした段階では、最新状態となっているため不要)
-
STEP03ブランチ(branch)を切る開発用の新しいブランチを作成して、移動する(mainブランチのみで十分という方は飛ばしても良いです)
-
STEP04ステージ(Stage)に保存更新内容をステージに保存
-
STEP05コミット(Commit)ステージングエリアの内容をローカルリポジトリに保存
-
STEP06プッシュ(Push)リモートリポジトリに更新内容を反映する
-
STEP07mainブランチにマージ(merge)新しく作成したブランチをmainブランチに結合する(*ローカルリポジトリ上でマージしない!)
-
STEP08リモートリポジトリの内容をプル(pull)する更新したローカルリポジトリの内容をリモートリポジトリに反映する
-
STEP09不要なブランチを削除更新のために作成した新しいブランチが不要になるので削除する
各ステップを以降詳しく説明してきます!
準備 : ローカルリポジトリの作成
まずは、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 : プル(pull)
プルとは、リモートリポジトリの内容をローカルリポジトリに反映して最新状態にすることです。
クローンした直後は最新状態になっていますが、共同作業を進めると自分が開発をしている間に第三者が、ローカルリポジトリを更新することがよくあります。
そのため、自分の更新内容をリモートリポジトリに反映(プッシュ)する前に必ず、最新のリモートリポジトリの内容をローカルリポジトリに反映(プル)してから作業を行いましょう。
具体的には下記を入力することでpullすることができます。
git pull origin [branch名]
補足 : originはリモートリポジトリのリポジトリ情報を表します。
このとき他の開発メンバーが、ローカルリポジトリで自分が更新したファイルと同一のファイルを更新している場合があります。
そのような状態を『コンフリクト』といい、競合している部分を処理してプルしましょう。
STEP3 : 新しいブランチ(branch)の作成・移動
簡単に説明するとブランチ(branch)とは、開発を行うようの枝分かれです。
最初は、mianブランチと呼ばれるブランチのみ存在しますが、一般的にmainブランチはプロジェクトの主流となるため、別のブランチで開発を進めます。
一般的に新しいブランチを作成することを『ブランチを切る』と言います。
*各自でGitを使用する場合は、このステップを省略し、mainブランチで作業を進めても良いです。
まずは、下記をコマンドラインに入力し、ワーキングディレクトリ上のブランチを確認しましょう。
git branch
補足 : -a
オプションを付けることでリモートリポジトリを含む存全てのブランチが表示可能
また、このコマンドを実行して、*がついているブランチが現在のブランチを表します。
また、『HEAD』というものも存在し、HEADは現在のブランチの最新コミットを指し示します。
次にコマンドラインに下記を入力し、新しいブランチを作成しましょう。
git branch [branch名]
[branch名]
には新しく作成するブランチ名を入力してください。
次に、下記を入力し、指定したブランチに移動しましょう。
git checkout [branch名]
下記を入力することで、新しいブランチの作成とそのブランチへの移動を同時に行うことができます。
git checkout -b [branch名]
また、ブランチ名の変更は以下で行うことができます。
git branch -m [変更前のbranch名] [変更後のbranch名]
STEP4 : ステージ(stage)に更新内容を保存(add)
変更内容をコミットする(ローカルリポジトリに変更内容を保存)ためには、更新内容を一度ステージ(Stage)と呼ばれる場所に移動する必要があります。
ステージ(Stage)は更新内容を保存するための待機場だと思っておくと良いです。
具体的に、適当なファイルを作成し、ワーキングディレクトリの修正内容をステージに上げてみます。
まず、下記を入力してワーキングディレクトリやステージにどのような変更内容があるのかを確認しましょう。
git status
git status
はgitで変更内容を更新する際に頻繁に使用するので覚えておきましょう。
次に、適当にファイルを更新して、下記のコマンドを実行しましょう。
git add [更新したファイル名]
このコマンドにより、更新内容がステージに上げられます!
[更新したファイル名]
にワーキングディレクトリで更新したファイル名を入力してください。
カレントディレクトリ上の全てのファイルをstaging areaに追加する場合は、下記を入力してください。
git add .
便利なので覚えておきましょう。
STEP5 : コミット(commit)
次は、ステージに上げた更新内容をコミットしていきます。
コミットする際は、下記をコマンドラインに入力してください。
git commit -m "commitメッセージ"
コミットする際は、更新内容が的確に伝わるコミットメッセージを記入しましょう。
もし-m
を付けずに以下を入力すると、デフォルトでvimエディタが開きます。
git commit
操作方法については『知識0から始めるVim講座』を参考にしてください。
メッセージを入力したら:wq
と入力することでcommitが完了します。
次に進む前に下記を入力し、コミット履歴を確認しておきましょう。
具体的には下記の入力により、コミットの内容を確認することができます。
git log
簡単に説明すると、origin
はリモートリポジトリのmainのブランチを表し、HEADは現在のブランチを指している。
STEP6 : プッシュ(push)を行う
*プッシュ(push)する前に必ずマージ先のブランチをプル(pull)しましょう。
git pull origin [branch名]
補足 : originはリモートリポジトリを表す
次は、現在のブランチ情報をリモートブランチに送信します(基本的にリモートリポジトリ側で二つのブランチを結合(マージ)します)
具体的には、下記を実行することで、現在のブランチの内容をリモートリポジトリに反映(プッシュ)することができます。
git push origin [branch名]
STEP7 : mainブランチにマージ(Pull Request)
次にリモートリポジトリ上でブランチをマージしていきます。
まずは、pullリクエスト(PR)と呼ばれるリクエストを作成する。
『New pull request』をクリックしてください。
上部でマージするブランチを適切に選択したら、タイトルとコメントを入力し、『Create pull request』をクリックしてください。
これで、pull requestの作成は終了です!!
実際の開発の場面では、リポジトリの管理者等がpull requestを承認してマージの許可を決定します。
しかし、今回は練習のため各自でpull requestを承認していきます。
まずは、『pull request』というタブをクリックし、下記の画面に移動してください。
『Merge pull request』をクリックしてください。
適当にメッセージを入力し、『Confirm merge』をクリックしてください。
この画面が表示されればmergeは終了です。
STEP8 : リモートリポジトリの情報をプルする
リモートリポジトリ上でブランチをマージしても、ローカルリポジトリにその情報は反映されていません。
そのため、その情報をローカルリポジトリに反映しましょう。
まずは、下記を入力してmainブランチに移動しましょう(チェックアウト)
git checkout main
次に、下記を実行してリモートリポジトリの内容をプルしましょう。
git pull origin main
より詳しく説明すると、指定したリモートリポジトリのブランチを現在のローカルリポジトリのブランチにマージしています。
STEP9 : 不要なブランチを削除
ブランチが増えてきてしまうと管理が大変なので、ローカルリポジトリ上の不要なブランチを削除しましょう。
まずは、下記を入力しローカルリポジトリ上のブランチを削除しましょう。
git branch -d [不要なブランチ名]
*mainブランチにマージしていないブランチは削除できない
次に以下の流れでローカルリポジトリ上の不要なブランチを削除します。
- リモートリポジトリのCode画面に移動
- branchをクリックして、branch一覧画面に移動
- 不要なbranchを選択して、ゴミ箱ボタンを押して削除
お疲れ様です!これがGitの一連の流れです。
自分のコードのLogを取るために使用する場合は、ブランチを切らずに以下の流れで開発を進めても良いです。
-
STEP01クローン(Clone)ローカルリポジトリをリモートリポジトリにコピーする
-
STEP02プル(pull)リモートリポジトリの内容をローカルリポジトリに反映して、最新の状態する(クローンした段階では、最新状態となっているため不要)
-
STEP03ステージ(Stage)に保存更新内容をステージに保存
-
STEP04コミット(Commit)ステージングエリアの内容をローカルリポジトリに保存
-
STEP05プッシュ(Push)リモートリポジトリに更新内容を反映する
まとめ
今回は、Gitの最も基本となる使用方法を紹介しました。
Gitは使用できるようになると本当に便利です。
早い段階から習得するように努めましょう。
Pythonを学習するのに効率的なサービスを紹介していきます。
まず最初におすすめするのは、Udemyです。
Udemyは、Pythonに特化した授業がたくさんあり、どの授業も良質です。
また、セール中は1500円定義で利用することができ、コスパも最強です。
下記の記事では、実際に私が15個以上の講義を受講して特におすすめだった講義を紹介しています。
他のPythonに特化したオンライン・オフラインスクールも下記の記事でまとめています。
自分の学習スタイルに合わせて最適なものを選びましょう。
また、私がPythonを学ぶ際に使用した本を全て暴露しているので参考にしてください。