物知らずPGの覚え書き

「理解したこと」や「こうやって使えた」などのプログラムの覚え書きとなります

git(コンソールver)の基本的な使い方 ~Push & Clone/Pull編~ [Windows]

はじめに

前回はワークツリーからローカルリポジトリにコミットする方法について説明したので、今回は  
①ローカルリポジトリからリモートリポジトリにプッシュする方法と
②リモートリポジトリからClone/Pullする方法について説明します。

事前準備

使用するリモートリポジトリはGitHub上のものを使用するので、アカウントをお持ちでないかたは登録しておいてください。
ここで注意なのですが、GitHubでリモートリポジトリをPrivateで作成するには有料会員になる必要があります。ですので、誰に見せたくないものがある場合はPushしないように注意をしてください。 学生の場合は二年間は無償で利用できるようなので、利用することを勧めます。
また、この二年の間に作成したプライベートリモートリポジトリは二年経った後もプライベートとして利用出来るようなので、二年の間に多くのプライベートリモートリポジトリを作成しておくとよいかもしれません。 education.github.com

GitHubでリモートリポジトリの作成

ローカルリポジトリからpushするにはGitHub上で先にリモートリポジトリを作成しておく必要があるのでその方法について説明します。
GitHubのページの右上の+ボタンから「New repository」をクリックすると以下のページが表示されるので、「Repository name」を必ず記述し、PublicかPrivateを選択します。

その下に、「Initialize this repository with a README」のチェックボックスがあるのですが、これはリポジトリを作成する際に一緒にREADME.mdファイルを作成するかどうかというものです。


ここで注意なのですが、チェックは入れないほうが良いと思います。(ローカルリポジトリをすでに作成しており、それをPushする場合)
というのも、README.mdファイルを作成するとそれがリモートリポジトリでの1つの変更履歴となってしまい、ローカルリポジトリからPushする際に、エラーが生じます。
つまり、ローカルにはない変更点(README.md)がリモートには含まれているため、統合していると言うことです。
この解決策として、mergeしてからpushする方法もありますが、チェックしない方が楽だとおもいます。(めんどくさいので)


最後に「Create repository」をクリックすれば作成完了です。


f:id:YoiTaka:20170728110142p:plain

ローカルからリモートリポジトリにプッシュ

流れとしては以下になります。
1. リモートリポジトリへの登録(remote)
2. ローカルポジトリをプッシュ(push)

リモートリポジトリへの登録

pushする先のGitHub上のリモートリポジトリのアドレスを登録します。 URLはGitHub上のHTTPSからコピーします。

//git remote add <name> <url>   

C:\Sample>git remote add origin <url>

ローカルリポジトリをPush

//git push <repository> <refspec>.. :  <repository>はプッシュ先の登録名、<refspec>はブランチ名
git push -u origin master


上のコマンドをたたくと、GitHub上に作成した空のリモートリポジトリにワークツリーで作成したtest.txtが追加されていることが確認できます。


f:id:YoiTaka:20170728113729p:plain

CloneとPull

Clone

cloneはリモートリポジトリ内の変更履歴を、丸ごとリモートリポジトリに複製する際に使用します。
以下のコマンドを打つとSampleディレクトリ内のSampleディレクトリにリモートリポジトリの内容が複製されます。

//git clone <repository> <directory> : <repository>はリモートリポジトリのURL、<directory>は複製先のディレクトリ名

C:\Sample>git clone  https://github.com/YoiTaka/Sample.git C:\Sample\Sample

Cloning into 'C:\Sample\Sample'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.

Pull

pullはcloneと似ているのですが、丸ごと複製するcloneに対して、既にあるローカルリポジトリを更新する際に使用します。
以下のコマンドを打つとSampleディレクトリ内にリモートリポジトリの変更内容が更新されます。

// git pull <repository> <refspec>... : <repository>はプル先のpath、<refspec>はプルするブランチ

C:\Sample>git pull origin master

remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (5/5), done.
From https://github.com/YoiTaka/Sample
 * branch            master     -> FETCH_HEAD
   4758ce9..7ba4cba  master     -> origin/master
Merge made by the 'recursive' strategy.
 Add remote.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 Add remote.txt

おわりに

今回はgitのPushとClone/Pullについて説明しました。
前回と今回の記事では、ワークツリーからリモートリポジトリにpushする方法と、Clone/Pullする方法を説明をしましたが、branchやmergeなどの開発を行う上でより有用なコマンドについては説明していないので、次回説明したいと思います。

/* パンくずリスト*/ /* カテゴリ階層化*/