Gitのコマンドを使いこなそう!頻繁に使用するコマンドを実例を用いて紹介
![Gitのコマンドを使いこなそう!頻繁に使用するコマンドを実例を用いて紹介](/infla/column/wp-content/uploads/2020/04/665_thumbnail.jpeg)
Gitとは?
Gitとは、バージョン管理システムの1つです。
アプリケーションのソースコードの管理や、システムの共同開発の際に使用するツールとして様々な場面で使用されています。
GitとGithubの違い
Gitはバージョン管理システムそのものを指し、GithubはGitを用いたウェブサービスの名称です。
Githubでは、クラウド上にリモートリポジトリが作成され、これに対してコードのレビューを行う機能(プルリクエスト)があります。
リポジトリ
リポジトリとは、ディレクトリやファイルに関する情報を保管している場所です。
Gitには、ローカルリポジトリとリモートリポジトリの2つがあります。
ローカルリポジトリ
ローカルリポジトリとは、ユーザのPC内にあるリポジトリです。
作業は基本的にローカルリポジトリで実施します。
リモートリポジトリ
リモートリポジトリとは、サーバーやクラウド上に存在するリポジトリです。
作業中はローカルリポジトリで作業した内容をリモートリポジトリに反映する手順があります。
リモートリポジトリと同期することで、万が一ローカルリポジトリのデータが消えてしまった場合でもデータを復元することができます。
Gitの使用方法
Gitはコマンドラインインターフェース(CLI)とグラフィカルユーザインターフェース(GUI)の双方を利用することができます。
一般的にはCLIを用いて操作する場合が多いですが、初心者や操作に不安のある方はGUIで慣れていくと良いでしょう。
ここからは、頻繁に使用するコマンドを実例を用いて紹介します。
アプリケーションをgitの監視下に置く
アプリケーションをgitの監視下に置く場合、その指示を出す必要があります。
コマンドはgit init
です。
1
2
3
|
% git init
Reinitialized existing Git repository in /Users/xxxx/<ディレクトリ名>/.git/
|
対象のディレクトリで、コマンドls -la
を実行します。
1
2
3
|
% ls -la
drwxr-xr-x 9 xxxx staff 288 4 7 11:49 .git
|
.git
が生成されていれば成功です。
リモートリポジトリ上のファイルを自分のPCへコピーする
Gitでは、リモートリポジトリ上にあるファイルを自分のPCへコピーすることができます。
コマンドはgit clone
です。
1
|
git clone https://リモートリポジトリのURL
|
ブランチを作成する
Gitを用いて作業する際は、ブランチを作成して作業します。
ブランチを作成することで、大元のファイルがコピーされ、コピーした側で作業をすることができます。
ブランチを作成するコマンドはgit branch ブランチ名
です。
例えば、ブランチ名branch_Aのブランチを作成する場合、以下のようにコマンドを使用します。
1
|
% git branch branch_A
|
現在のブランチを確認する
作業中、現在作業しているブランチ(カレントブランチ)は都度確認するようにしましょう。
コマンドはgit branch
です。
1
2
3
|
% git branch
* branch_A
master
|
ブランチを切り替える
作業中にブランチを切り替える場合があります。その際は、コマンドgit checkout ブランチ名
を使用します。
なお、ブランチを切り替える際は未コミットの情報をコミットしておくようにしましょう。
例えば、マスターブランチからbranch_Aに切り替える場合のコマンドは次の通りです。
1
|
% git checkout branch_A
|
リポジトリの状態を確認する
ブランチを作成し、変更登録する際には事前にリポジトリの状態を確認しましょう。
コマンドはgit status
です。
1
2
3
4
5
6
7
8
9
|
% git status
On branch branch_A
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")
|
上記の例では、README.mdで差分が発生していることを示しています。
差分をインデックスに追加する
編集して発生した差分をリモートリポジトリに反映させるためには、まずインデックスに追加する必要があります。
コマンドはgit add
です。
1
2
3
|
% git add . //全てのファイルとディレクトリをインデックスに追加する
% git add ファイル名 //対象のファイルのみをインデックスに追加する
|
インデックスとは?
インデックスとは、ワークツリー(作業しているファイル)とリポジトリの間に存在する差分を登録するための準備が行われる場所です。
インデックスはステージとも呼ばれます。
差分を登録する
差分をリポジトリに登録することを「コミット」と呼びます。
コミットすることにより、リモートリポジトリへ反映する準備が整います。
コマンドはgit commit [オプション] [ファイル名]
です。
-m
オプションを付けることで、コミットにメモを残すことができます。
このメモは、「このコミットはどのようなコミットであるか」を書き残しておくために使用します。
1
|
git commit -m ‘メモ’
|
コミットの履歴を確認する
Gitでは、コミットの履歴やコミットに付与されたIDを確認することができます。
コマンドはgit log
です。
1
2
3
4
5
6
7
|
% git log
commit 21e11994d84aa5b4b533b9bc49cf003250c266c9 (HEAD -> branch_A, origin/master, master)
Author: Githubのユーザ名<70783556+Githubのユーザ名@users.noreply.github.com>
Date: Wed Apr 7 12:25:48 2021 +0900
‘first_commit’
|
21e11994d84aa5b4b533b9bc49cf003250c266c9
がコミットIDです。
過去のコミットを取り消す
誤ってコミットしてしまった場合など、過去のコミットを取り消すことができます。
コマンドはgit revert コミットID
です。
1
|
% git revert 21e11994d84aa5b4b533b9bc49cf003250c266c9
|
差分をリモートリポジトリへ反映させる
リポジトリに登録された差分をリモートリポジトリへ反映させることを「プッシュ」と呼びます。
プッシュすることで、初めてリモートリポジトリにコードが反映されます。
コマンドはgit push
です。
1
|
git push origin ブランチ名
|
originとは?
originとは、リモートリポジトリのことです。
Gitを使用していく上で、頻繁に登場しますので是非覚えておきましょう。
最初のコミットをプッシュする場合
初回の場合、リモートリポジトリの情報を予め登録しておく必要があります。
手順は以下の通りです。
①:ブラウザのGithub上でリポジトリを作成する
②:以下のコマンドをコピーする
1
|
git remote add origin リモートリポジトリのURL
|
1
|
git remote add origin リモートリポジトリのURL
|
差分を統合する
作成した差分は別のブランチのデータと統合することができ、この作業を「マージ」と呼びます。
コマンドはgit merge ブランチ名
です。
例えば、マスターブランチの内容をマージする場合は以下のように使用します。
1
|
git merge master
|
リモートリポジトリのマスターブランチ内容をローカルリポジトリに反映させる
リモートリポジトリのマスターブランチの内容とローカルリポジトリの内容に差分がある際、リモートリポジトリの内容をローカルリポジトリに反映させることができます。
この手順を「プル」と呼びます。
コマンドは git pull
です。
1
|
% git pull origin master
|
発展的なコマンド
Gitのコマンドには頻繁には使用しない発展的なものもあります。
今回は知っておくと役に立つコマンドを3点紹介しますので、ぜひ参考にしてみてください。
履歴を修正する
リセットすることで、誤った記述をコミットしてしまった場合など、コミット履歴を修正することができます。
コマンドはgit reset <�コミットID> <�戻したい場所>
です。
例えば、コミット履歴が以下の通りにあるとします。
1
2
3
4
5
|
% git log --oneline
5347e3e (HEAD -> branch_A) Revert "update Readme"
87f7f5f update Readme
21e1199 (origin/master, master) ‘first_commit’
|
1
|
% git reset 21e1199 --hard
|
1
2
3
|
% git log --oneline
21e1199 (HEAD -> branch_A, origin/master, master) ‘first_commit’
|
「どこまで戻すか」については、次のオプションがあります。
対象のコミットそのもののみを削除したい場合
1
|
--soft
|
指定は不要
index、ワーキングツリーまで削除したい場合
1
|
--hard
|
--hard
を使用しないようにしましょう。
コミットを他のブランチに移動する
cherry-pickを使用すると、指定したコミットを他のブランチに移動させることができます。
例えば、branch_Bで作成したコミット・second_commitをbranch_Aへ移動させるとします。
1
2
3
4
5
6
7
|
% git log
commit 21a4cce7b8351f37b63772533e5ef0b2731d25f4 (HEAD -> branch_B)
Author: Githubのユーザ名<70783556+Githubのユーザ名@users.noreply.github.com>
Date: Wed Apr 7 17:39:07 2021 +0900
second_commit
|
ブランチを移動させたいブランチへ切り替えます。
1
2
|
% git checkout branch_A
Switched to branch 'branch_A'
|
git cherry-pick コミットID
を実行します。
1
2
3
4
5
|
% git cherry-pick 21a4cce7b8351f37b63772533e5ef0b2731d25f4
[branch_A 40a7f4b] second_commit
Date: Wed Apr 7 17:39:07 2021 +0900
1 file changed, 2 insertions(+), 1 deletion(-)
|
git log
でブランチが切り替わっていることを確認します。
1
2
3
4
5
6
7
|
% git log
commit 40a7f4b14c55f51508c5fa53e82cb6cae783e4c9 (HEAD -> branch_A)
Author: Githubのユーザ名<70783556+Githubのユーザ名@users.noreply.github.com>
Date: Wed Apr 7 17:39:07 2021 +0900
second_commit
|
コミットせずに一時的に退避させる
stashを用いることで、作成した差分をどうしてもコミットしたくない場合、一時的に退避させることができます。
現在、README.mdで差分が発生しています。
1
2
3
4
5
6
7
8
9
|
% git status
On branch branch_A
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")
|
コマンドはgit stash
です。
1
2
3
|
% git stash
Saved working directory and index state WIP on branch_A: 40a7f4b second_commit
|
退避リストはコマンドgit stash list
で確認できます。
1
2
3
|
% git stash list
stash@{0}: WIP on branch_A: 40a7f4b second_commit
|
stashしたものを復元するためには、コマンドgit stash apply 退避リストの順番
を使用します。
今回の例では、0番目のstashを復元します。
1
2
3
4
5
6
7
8
9
|
% git stash apply 0
On branch branch_A
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")
|
変更を復元しつつ、退避リストからも削除したい場合はコマンドgit stash pop 退避リストの順番
を使用します。
例えば、1番目の変更を復元する場合は以下のように使用します。
1
2
3
4
5
6
7
8
9
10
|
% git stash pop 1
On branch branch_A
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{1} (be7de5bdffa6b52fb456698292bcc68976effed5)
|
退避リストを削除する場合、コマンドgit stash drop 退避リストの順番
を使用します。
順番を指定しない場合、最新の変更が削除されます。
1
2
3
|
% git stash drop 0
Dropped refs/stash@{0} (80f5efa823dd2882f81a64496bacfaeda463e51d)
|
git stash clear
を使用します。
Gitはコマンドを使いこなすことで作業がラクになる
今回は、Gitのコマンドについて、頻繁に使用するコマンドと発展的なコマンド3点を紹介しました。
Gitでは、コマンドでしか実行できない操作が多くあります。
それらも含めて、効率良く開発を進めていくためにはコマンド操作がとても便利です。
普段、GUIを使用してGit操作をされており、慣れてきた方は是非コマンドでの操作に挑戦してみては如何でしょうか。
画面を切り替える必要がなくなるため、効率良く作業を進めることができます。
是非、Gitのコマンドを使いこなして効率良いアプリケーション開発を行っていきましょう。
FEnetを運営しているネプラス株式会社はサービス開始から10年以上
『エンジニアの生涯価値の向上』をミッションに掲げ、
多くのインフラエンジニア・ネットワークエンジニアの就業を支援してきました。
ネプラス株式会社はこんな会社です
秋葉原オフィスにはネプラス株式会社をはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
![秋葉原オフィスイメージ](/common/images/jobinfo/akihabara.webp)
-
インフラ業界に特化
ネットワーク・サーバー・データベース等、ITインフラ業界に特化。Cisco Systemsプレミアパートナーをはじめ各種ベンダーのパートナー企業です。
業界を知り尽くしているからこそ大手の取引先企業、経験豊富なエンジニアに選ばれています。
-
正社員なのにフリーランスのような働き方
正社員の方でも希望を聞いたうえでプロジェクトをアサインさせていただいており、フリーランスのような働き方が可能。帰社日もありません。
プロジェクト終了後もすぐに次の案件をご紹介させていただきますのでご安心ください。
-
大手直取引の高額案件
案件のほとんどが大手SIerやエンドユーザーからの直取引のためエンジニアの皆様へに高く還元できています。
Ciscoをはじめ、Juniper、Azure、Linux、AWS等インフラに特化した常時300件以上の案件があります。
-
スキルアップ支援
不要なコストを削減し、その分エンジニアの方へのスキルアップ支援(ネットワーク機器貸出、合格時の受験費用支給など)や給与で還元しています。
受験費用例)CCNP,CCIE:6-20万円、JNCIS:3-4万円、AWS:1-3万円など
※業務に関連する一定の資格のみ。各種条件がありますので詳しくは担当者へにお尋ねください。
-
現給与を保証します!※
前職の給与保証しており、昨年度は100%の方が給与アップを実現。収入面の不安がある方でも安心して入社していただけます。
※適用にはインフラエンジニアの業務経験1年以上、等一定の条件がございます。
-
インセンティブ制度
ネットワーク機器の販売・レンタル事業等、売上に貢献いただいた方にはインセンティブをお支払いしています。
取引先企業とエンジニア側、双方にメリットがあり大変好評をいただいています。
-
社会保険・福利厚生
社員の方は、社会保険を完備。健康保険は業界内で最も評価の高い「関東ITソフトウェア健康保険組合」です。
さらに様々なサービスをお得に利用できるベネフィットステーションにも加入いただきます。
-
東証プライム上場企業グループ
ネプラスは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
ネプラス株式会社に興味を持った方へ
ネプラス株式会社では、インフラエンジニアを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
オンライン面接も随時受付中。ぜひお気軽にご応募ください。
![ネプラス株式会社へのご応募はこちら↓](/common/images/flow_arrow.webp)
![ネプラス株式会社へのご応募はこちら↓](/common/images/follow.webp)
新着案件New Job
-
【高額年収】/【CCNA取得者歓迎】/ネットワークの構築/BIG-IP/東京都千代田区/【WEB面談可】/在宅ワーク/20代~30代の方活躍中
年収540万~540万円東京都千代田区(神保町駅) -
東京都中央区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/在宅ワーク
年収600万~600万円東京都中央区(小伝馬町駅) -
【高額年収】/インフラ構築支援/東京都港区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/在宅ワーク
年収960万~960万円東京都港区(新橋駅) -
ガバナンス推進、セキュリティ基盤支援/東京都港区/【WEB面談可】/在宅ワーク/20代~40代の方活躍中
年収780万~780万円東京都港区(新橋駅) -
カー用品販売会社の情報システム運用/東京都千代田区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/テレワーク
年収576万~576万円東京都千代田区(水道橋駅) -
ネットワーク構築、検証/東京都渋谷区/【WEB面談可】/テレワーク/20代~40代の方活躍中
年収540万~540万円東京都渋谷区(渋谷駅)