GitHub - "clone" コマンドでリモートリポジトリをローカルに複製する方法 | サービス | プロエンジニア

    GitHub - "clone" コマンドでリモートリポジトリをローカルに複製する方法

    • このページをはてなブックマークに追加

    公開日:2017年04月18日 最終更新日:2019年09月26日

    GitHubの既存リポジトリをローカルPCに"clone(複製)"する方法とローカルPC上で作成したコミットを同期する方法について解説します。
    GitHub 入門 ~アカウントを作成する方法~」では、GitHubのアカウントとリモートリポジトリの「TestProjectリポジトリ」を作成しました。GitHubのアカウントを作成していない方はこちらのページを参考にGitHubのアカウントと新規リポジトリを作成します。また、ローカルPCに「Git」をインストールしていない場合は、「 WindowsにGitをインストールする方法」を参考に「Git」をインストールして下さい。

    目次

    1. "clone"とは?

    "clone(クローン)"とは、「データなどをそっくりそのままコピー(複製)すること」です。Gitの"clone"コマンドを実行すると、リモートリポジトリと同じ環境をローカルのPC上に作成(複製)する事ができます。バージョンの管理履歴も一緒に複製されますので、ブランチの作成やコミットなどを、ローカルの環境で行うことが可能になります。

    2. リモートリポジトリの確認

    GitHub(https://github.com/)にログインして、新規にリポジトリを作成する場合は、「Initialize this repository with a README」にチェックを入れてリポジトリを作成して下さい。チェックを入れると、リポジトリの初期化とコミット済の「README.md」ファイルが作成されます。

    ●Create a new repository

    ここでは、「GitHub 入門 ~アカウントを作成する方法~」で作成した「TestProject」リポジトリを使ってローカルPCへclone(複製)します。GitHubにログインしてリポジトリの詳細ページを確認してみましょう。

    GitHub(https://github.com/)にログインすると右下に、作成したリポジトリの一覧が表示されますので"clone"するリポジトリをクリックして「Code」のページを表示します。

    ●TestProjectリポジトリ

    緑色の「Clone or download」ボタンをクリックして下さい。

    ●Clone or download

    「TestProject」リポジトリのURLが記載されています。URL右のコピーボタンをクリックしてクリップボードにコピーして下さい。ローカルPCの「Git」での作業に使いますので、メモ帳かどこかに控えておきます。

    3. ローカルPCで"clone"コマンドを実行する

    ローカルPCの任意の場所に作業用フォルダーの「Git-test」フォルダーを作成します。フォルダー内で右クリックをして「Git Bash」を起動します。

    ●「Git Bash」の起動

    「Git Bash」のプロンプトに、

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

    を入力して「Enter」キーを押します。 [リモートリポジトリのURL]は先ほどGitHubの「Clone or download」ボタンで確認したURLになります。サンプルのURLは「https://github.com/Internous-testusr/TestProject.git」ですが、”Internous-testusr/TestProject.git”は自身で作成したアカウント名とリポジトリ名になります。

    ●[git clone]

    [email protected] MINGW64 ~/Documents/Git-test
    $ git clone https://github.com/Internous-testusr/TestProject.git
    Cloning into 'TestProject'...
    remote: Counting objects: 3, done.
    remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
    Unpacking objects: 100% (3/3), done.

    「Git-test」フォルダー内に"clone"された「TestProject」フォルダーが作成されました。「Bash」コマンドでフォルダーを変更して、ステイタスを確認してみましょう。

    ●「TestProject」フォルダーの移動とファイルの確認

    [email protected] MINGW64 ~/Documents/Git-test (master) $ cd TestProject/ [email protected] MINGW64 ~/Documents/Git-test/TestProject (master) $ ls -a ./ ../ .git/ README.md

    [cd]コマンドで「TestProject」フォルダーに移動します。[ls]コマンドでフォルダーの中身を確認すると、リモートリポジトリと同じ「README.md」ファイルがあるのを確認する事ができました。「.git」フォルダーはGitの管理フォルダーになります。

    ●[git status]

    [email protected] MINGW64 ~/Documents/Git-test (master)
    $ git status
    On branch master
    Your branch is up-to-date with 'origin/master'.
    nothing to commit, working tree clean

    「git status」コマンドを実行すると(master)ブランチ上で履歴管理が出来る状態になっているのが分かります。リモートリポジトリを"clone"コマンドで複製する事で、ローカルPCでも、リモートリポジトリと同じ環境で作業ができます。

    4. ローカルリポジトリでファイルを追加(add)する

    それでは、"clone"コマンドで複製した「TestProject」リポジトリにファイルを追加してみましょう。新規ファイルの「git-test.txt」ファイルをローカルPC上の「TestProject」フォルダーに追加します。

    ●git-test.txt

    「git status」コマンドでリポジトリの状態を確認してみると、未追跡のファイルとして、「git-test.txt」ファイルが表示されます。

    ●[git status]

    [email protected] MINGW64 ~/Documentst/TestProject (master)
    $ git status
    On branch master
    Your branch is up-to-date with 'origin/master'.
    Untracked files:
    (use "git add ..." to include in what will be committed)
    git-test.txt
    nothing added to commit but untracked files present (use "git add" to track)

    ローカルリポジトリの(master)ブランチ上で、作業を継続する事ができますので、新規ファイルをステージング・エリアに登録(add)します。

    ●[git add]

    [email protected] MINGW64 ~/Documentst/TestProject (master)
    $ git add -A

    追跡対象のファイルをコミット(commit)します。

    ●[git commit]

    [email protected] MINGW64 ~/Documentst/TestProject (master)
    $ git commit -m "local commit MSG"
    [master e5ff4ee] local commit MSG
    1 file changed, 0 insertions(+), 0 deletions(-)
    create mode 100644 git-test.txt

    ローカルでの変更履歴が追加されました。「git log」で管理履歴を確認してみます。

    ●[git log]

    [email protected] MINGW64 ~/Documentst/TestProject (master)
    $ git log
    commit e5ff4eedac40da4cafb8f9f8e5733285cf0afc15
    Author: Taro Yamada
    Date: Fri Apr 21 12:33:23 2017 +0900
    local commit MSG
    commit cf3a52d2bab44a85a053a4c65199161c27ea8127
    Author: Internous-testusr
    Date: Fri Apr 14 07:47:41 2017 +0900
    Initial commit

    「Internous-testusr」がリモートで作成したコミット(cf3a52d)リポジトリに「Taro Yamada」がローカルで作成したコミット(e5ff4ee)が追加されました。

    5. ローカルの変更履歴をリモートリポジトリに反映(git push)する

    git push」コマンドを使うと、ローカルで追加したファイルのコミット情報を「GitHub」のリモートリポジトリに反映する事ができます。GitHubにログインをして、現在のTestProjectの状態を確認すると、初期コミット時の「README.md」ファイルのみがある状態です。

    コミット(commit)した後に「git status」でステイタスを確認してみると「Your branch is up-to-date with 'origin/master'.」とあります。リモートリポジトリからローカルPCに"clone"した時は、「git clone [リモートリポジトリのURL]」を指定しましたが、ローカルのリポジトリを同期させる際には、URLを指定しなくても「origin」というShortNameを指定する事で、ローカルの(master)ブランチのコミットをリモートリポジトリに反映させることが可能です。

    ●[git log]

    [email protected] MINGW64 ~/Documentst/TestProject (master)
    $ git push origin master
    Counting objects: 3, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 286 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To https://github.com/Internous-testusr/TestProject.git
    cf3a52d..e5ff4ee master -> master

    ●localコミットの追加

    「GitHub」のリポジトリを確認してみると、ローカルPC上で作成・コミット(commit)した「git-test.txt」が同期されています。

    【関連文書】 WindowsにGitをインストールする方法
    【関連文書】 Git for Windows の使い方 ~準備編~
    【関連文書】 Git の使い方 ~リポジトリの作成とコミット~
    【関連文書】 Git の使い方 ~リポジトリへ変更内容を記録する方法~
    【関連文書】 git add の取り消し方法
    【関連文書】 git コマンド ~コミットの取り消し~
    【関連文書】 Gitでブランチを作成する方法
    【関連文書】 Git - ブランチを削除する方法

    最新案件情報をチェック!

    年収400万円〜900万円
    勤務地 神奈川県
    月額単価50万円〜70万円
    勤務地 東京都 中央区
    月額単価70万円〜80万円
    勤務地 東京都 中央区
    月額単価70万円〜80万円
    勤務地 東京都 渋谷区
    • このページをはてなブックマークに追加

    おすすめ記事

  • ピックアップ

    正社員

    【Java/C】システムエンジニア|Webアプリケーション開発

    年収 :400万円〜900万円

    業務系、組み込み系、Web、アプリケーションなど幅広いフィールドでお客様のニーズに沿って課題を解決し...

    ジャパニアス株式会社

    フリーランス

    【PHP】フルスタックエンジニア★飲食店向けモバイル自動化サービスの開発

    月額単価 :50万円〜70万円

    メニューマスターで一元管理できるフルクラウド型システムの開発を担当して頂きます。 主に外食向けの...

    フリーランス

    【iOS】Webエンジニア★飲食店向けモバイル自動化サービスの開発

    月額単価 :70万円〜80万円

    以下の業務を担当して頂きます。 ①飲食業界向けPOS iOSアプリの保守・運用・開発 ②①の管理画面(WEB...

    フリーランス

    【Go】サーバーサイドエンジニア★eSports関連アプリの開発

    月額単価 :70万円〜80万円

    自社サービスとして展開しているeSportsプレイヤー向けの管理プラットフォームのサーバーサイド開発を担...