気まま赴くままに。デザインからプログラミングまでをたまにまとめてます。

その他

【GitHub】GitとGitHubの違いと使い方

今回もデザインというよりかは少々開発者向けの記事になってしまいますが。。

バージョン管理ツールとして有名なGit。

今回はGitのシェルであるGit Bashからコマンドラインを用いてGithubで共有できる様にするまでの道のりと簡単な使い方を説明したいと思います。

今回の流れ

GitとGithubの紹介

GitHubの登録

Gitのインストール

Gitの接続設定

ローカルリポジトリの作成

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

スポンサーリンク



目次

GitとGitHub

どちらもバージョン管理を行えるツールとなっていますが、

Gitはバージョン管理システムであり、インストールして使います。

GitHubはバージョン共有サービスです。

Gitとは

GitをインストールするとGit Bashというコマンドラインが付いてくるので、
それを用いてバージョン管理出来るようになります。

ローカル環境(PC内)にバージョン履歴等の情報を残し、
任意の段階でGithubに上げることが出来ます。

 

リポジトリ:バージョン履歴を保存する場所。

コミット:ローカルリポジトリ(PC内)にバージョン状況を保存。

プッシュ:コミットしたものをリモートリポジトリ(Github)に上げる。

 

GitHubとは

ネットワーク(クラウド)上にバージョン状況を上げることが出来る様にしたもの。

これによって世界中の人と共有することが可能になり、
互いにバージョン状況について評価し合ったりプロジェクト単位でのToDo管理、
バージョンを統合したりリクエスト出来たり…と沢山出来る。用語も沢山。

フォーク:他者のリポジトリを自分のリモートリポジトリに複製。オリジナルへの貢献前提の為、通知もされる

GitHubの登録

Githubの公式サイトで登録をします。
https://github.com/

詳細はこちらが参考になると思います。
https://qiita.com/okumurakengo/items/848f7177765cf25fcde0

どんどん行きます

Gitのインストール

Gitの公式からDL&インストールします。
https://git-scm.com/

こちらが参考になると思います。
https://eng-entrance.com/git-install

自分はデフォルトでパパっと済ましちゃいました。。
途中cmdから使える様に出来る設定ありますね。。

とりあえずどんどん行きます

Gitの接続設定

インストールされたGit Bashを起動し、
SSH(GitHub等との接続に必要なセキュリティ)設定やパーミッション、configファイルの設定をしていきます。

SSL:クライアントへ接続の安全性を証明する物

SSH:サーバーとの接続を安全に行うもの

こちらを参考にさせて頂きました。
https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000

こちらの記事ではMacを使用している様でして、

winではchmodコマンドが使用できない様なのでパーミッションの設定は省きました。

念の為解説しておきます。
winでの設定になります。Cドラにインストールしてます。

動作確認

Bashで
git --version
と入力。
バージョンが出ればk

ユーザ名とメルアド
Bashで
git config --global user.name "ユーザ名"
git config --global user.email "メルアド"
と入力。
確認として
git config --list
と入力し、任意のものが表示されればk

SSH設定

公開鍵と秘密鍵

公開鍵はGitHubに関連付け、秘密鍵は自分のみが使用します。
この二つが結びつくことで鍵が開くわけです。
公開鍵暗号方式ですかね。懐かしい。。

鍵の作成

Bashで
ssh-keygen -t rsa -b 4096 -C "メルアド"
とすると生成されます。

各オプションに関しては先程の記事が物凄く詳しく書いてますが、
結構重要なのが
・tオプションで鍵のタイプ指定→rsa
・bオプションで鍵の長さ指定→4096(デフォ2048ですって)
の二つですね

上記コマンドを入力して、
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/ユーザ名/.ssh/id_rsa):
となったらそのままエンターで大丈夫です。

rsaファイルのファイル名を変更すると上手くいかなかったりします。
他のSSH接続もするかもなのに。。
エクスプローラーで設定しちゃおうかしら(自己責任
よくわからんです。

Enter passphrase (empty for no passphrase):
というのはパスフレーズです。
今後GitHubに接続する際に入力する物です。

このままエンターでもいけますが作成推奨。
入力しても見えないので慎重に入力してください。
そしてGitでのSSH接続の度に必要になるので、ちゃんと覚えといてください。

Enter same passphrase again:
もっかい入力

Your identification has been saved in /c/Users/ユーザ名/.ssh/id_rsa.
Your public key has been saved in /c/Users/ユーザ名/.ssh/id_rsa.pub.
ってなって変なのづらづら出てきたらk

No such file or directory
ってでてきたらディレクトリできてないよー
なので別途エクスプローラーから作成するか、
mkdir ~/.ssh
で作成してあげてください。
なんならcdしてあげてください。

ちゃんとできたか確認するため
ls ~/.ssh
してあげてください。
rsaとrsa.pubというファイルが出来ていれば大丈夫です。
無印rsaが秘密鍵で、rsa.pubが公開鍵です。

秘密鍵はバックアップとっとくと別のPCでも使えます。

ファイルエクスプローラーで確認し、
厳重に保管してくださいね。

configファイルの設定

SSH接続の度に
ssh (ユーザ)@(IPアドレス) -i (秘密鍵の場所)
と入力するのが面倒なので、
別途configファイルを作り設定しちゃおうという考え。

viを使うときがやって参りました・・・
Bashに
vi ~/.ssh/config
と入力しviへ。

そこに
Host github
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
と入力し、
Escキーを押下後、
:wq
と入力し、保存します。

次回からは
ssh github
で接続できるようになります。

GitHubに公開鍵を登録

GitHubにログインし、右上のメニューからSettingsを開きます。

SSH and GPG keysを選択し、New SSH keyで公開鍵を登録していきます。
・タイトル:PC名とか任意に分かり易いもの。
・Kay:先程生成したrsa.pubをエディタ(メモ帳でも可)で開いてコピペ。
※無印でなく.pubです。要注意。

Add SSH keyをクリックし、パスワードを入力されたらGitHubのパスワードを入力します。

Git BashからSSH接続してみる

ようやく辿り着きました。。
Bashに
ssh github
と入力することで接続が出来ます。

出来ていない場合何らかのミスがあります。
エラー文をよく読み重要そうなところを検索にかけてみましょう。

エラーの内、
Are you sure you want to continue connecting
というものがありますが、
これは「未知の接続だぞ続行していいのか?」とのこと。
yes
と入力して、
You've successfully authenticated
と出ればk

ローカルリポジトリを作成する

イニット:リポジトリを新規作成すること

まずはGitの作業ディレクトリを用意します。
mkdir git
cd git
としておきます。

ちなみに
pwdコマンドで現在のディレクトリを確認できます。
Positioning working directoryだそうです。
lsコマンドはList segmentsでセグメントってのが階層を指してるんだそうな。

このgitフォルダに今後Gitで履歴管理してほしいプロジェクトを突っ込んでいきます。
プロジェクト単位でリポジトリを作りたいのでgitの中にもう一つフォルダを作ってみましょう

mkdir uinon
cd uinon

今回のプロジェクトはuinonということでb

続けて
git init
と入力。

すると、
Initialized empty Git repository in C:/Users/ユーザ名/git/uinon/.git/
となり、新たに.gitフォルダが作成。
.gitフォルダ以下はリポジトリとなり、gitコマンドの対象となる。

アドコミット

前提知識

ワークツリー:実際に作業してるディレクトリ。ファイルエクスプローラから見れる普通の。

インデックス:リポジトリにコミットする際の準備点。場所みたいな解説が多いけど、これ普通に一次的に情報保存するインデックスファイルじゃないのかな。ステージが場所で。

アド:インデックスにワークツリーの状況突っ込む。私的にはインデックスファイルに状況書き込む。

コミット:リポジトリにインデックスを反映する。私的にはインデックスファイル突っ込む。

要はするに、エディタでファイル編集したら
アド(インデックス)→コミット
するだ。

私的なイメージだと、
情報書き込んで保存
という流れ。

ファイルに変更加えたらちょくちょくこの流れを繰り返す。

コミットする際にはコミットメッセージといって、
どんな変更を加えたかとかっていうメモを添えられる。

アドしてアドしてアドしたらコミットしておこう。

ちなみに

ここで言ってる「リポジトリ」は「ローカルリポジトリ」。
リモート、つまりGitHubへの反映には
アド(インデックス)→コミット→プッシュ
といった工程が必要になる。

後々説明するが、とりあえず今はアドコミの段階。

下準備

まずはviコマンドを用いてtest.txtというテキストファイルを作る。
因みにuinonディレクトリ内に作ることになる。
vi test.txt
中身は
test1
とかにしておくと自分でいじくる上で分かり易いかもですね。
Escキー押下後
:wq
で保存してください。

ちなみに

vi:Unix等でよく用いられるテキストエディタ。Visual editorとか。
vim:viの拡張版。viはUnix初期装備だが一部入っていないOSも。
viの方が古くシンプルで確実、私的にはvimを使用する程には使わないのでviでいいかと。
上のコマンドもどちらでも使用できます。

viやvimではいくつかモードがあり、
コマンド使用後にテキストを編集できる「挿入モード」になっていない場合は「i」を押してみてください。
Bashの下に「挿入」って表示されると思います。
後はEscキーを使用してコマンドモードと切り替えて使ってください。

内容に変更を加えたい場合も
vi 先程作ったファイル名
とすれば編集できます。

インデックス

続いてインデックスしてみる。アドの事だ。
git add test.txt
その際、
warning: LF will be replaced by CRLF in pushtest.txt.
と出るかも。改行コードをLFからCRLFに置換したらしい。
やめてよと思ったので、
git config --global core.autoCRLF false
としておく。

確認してみよう。
vi test.txt
で内容をtest2とかにして保存しておこう。

もう一回インデックスしてみよう。

git add test.txt
なんも表示されなくなった。

ちなみに

git status
でインデックスの中身確認できる。

インデックスする際のアドコマンドは、
・ファイルごとにアドする
git add ファイルパス
若しくは
・ワークツリーにある変更物全てアドする(ピリオド)
git add .
があります。
どちらもcdしておくと楽ですね。

 

コミット

とりあえずインデックスにはtest2の状態が保存されているので、
これをコミットしてみる。
git commit -m "commit1"

mコマンドは前述していたコミットメッセージを添えるためのもの。
“”内にメッセージを書く。

comitって打ったら怒られた。失敬失敬,,

1 file changed, 1 insertion(+)
create mode 100644 test.txt
みたいになったらOK。
「ローカルリポジトリ」に、バージョン状況を保存できたことになります。

確認として、
git log
と入力してみましょう。
commit ~~~~~~~~~~~~~~~~~~~ (HEAD -> master)
Author: 自分の名前 <自分のメルアド>
Date: Tue Feb 4 23:35:04 2020 +0900

commit1
みたいになったらk。
何だか前に登録しておいたメルアドがここで表示されてますね。
こんな感じでリモートリポジトリにも分かり易く履歴が残っていくわけです。

 

ちなみに

git reset
で直前のコミットを取り消すこともできる。

git reset --hard 任意のハッシュ値
とすることでコミットしたところまで戻ることもできます。
hardオプションは修正箇所、「全部」と指しています。

この「ハッシュ値」ですが
git log
をした際に、
commit ~~~~~~~~~~~~~~~~~~~ (HEAD -> master)
となっていた、
~~~~~の部分がハッシュ値というものになっています。

ここで紹介するもの以外にも色々コマンドあるので
Git コマンド
とかで調べるとよし。

 

リモートリポジトリを作成する

ここまでではローカル環境下のみでのバージョン管理になりました。

時代はクラウドです。ようやくここまで来ました。人類は凄すぎますね…

哺乳類最強説。

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

ターミナル(Bash)上からは「サーバーとの関連付け」が行える様です。
自分でサーバーを立てる場合ターミナルから作成してもいいみたいですね。

今回は既にローカルリポジトリがあり、それをGitHubに反映する方法を紹介したいと思います。

ちなみに
GitHubでリモートリポジトリを作成するには
・サイト上で作成する
・別サービス(GitLabやGitBucket)使って作成する
・ソフト(SourceTree等)使って作成する
という方法もあります。

ここまでの流れでは既にローカルリポジトリにtest.txt(内容:test2)のみが入った状況でコミットしてあります。

既存リポジトリをGitHubに反映する

今回は一番一般的かと思われるサイト上からの作成。

まずはGitHubにログイン。

一番最初のページ(左上の猫アイコンからここにこれます)から
「Create repository」若しくは「Start a project」で
新規にリモートリポジトリを作成します。

他にも右上の+アイコンからでも作れます。
どこからでも変わりません。

リポジトリ名は「repository1」にしてみます。

create。

ちなみに

Initialize this repository with a README
ですが、これにチェック入れるとリドミのmdファイル作ってくれます。

リドミはソフトをDLすると誰もが見る説明書ですね。
mdってのはマークダウン記法の拡張子で、
読みやすいような記法がなせるみたいです。

作っても良いですが私的にはあまり気にしてないですw
自分の記法でテキストファイル作るかこのmdファイルに書き込むかですかね。
今回は省いてますがリドミは作るべきですよ。

以下の画面になるかと思います。

今回の接続はSSHを採用しているのでSSHをクリック。

…or create a new repository on the command line
ターミナルから新たにローカルリポジトリを作成したい場合、このコマンドを入力してください。
やってることとしては、

・mdファイルの出力
・ローカルリポジトリのイニット
・mdファイルのインデックス
・コミット(Lリポへの反映)
・今作ったリモートリポジトリの関連付け
・プッシュ(Rリポへの反映)

…or push an existing repository from the command line
既にあるリポジトリを反映していくコマンド。接続してプッシュしてます。

今回採用するのは2つ目のやつ。
Quick setup で選択したURLとの紐付けです。
git remote add origin サーバーのURL

ちなみに
URLってのが何かというと、
GitHub以外にもローカルリポジトリを共有するサービス、
つまりGitのホスティングサービスというものがあります。
GitHubが一番有名ではありますが、
課金をする際に料金が違ったり、プランが異なります。
課金しなくてもGitHubは容量無制限ですがプライベートで使用できないってとこですね。
前述していたGitLabやGitBucketもGitのホスティングサービスだったりします。

そしたらプッシュ
git push -u origin master

Branch 'master' set up to track remote branch 'master' from 'origin'.
ってなったらOKです。

ちなみに
色々エラーはありますが、自分は
Your push would publish a private email address.
って出てきました。
メールアドレス隠す設定してるけど見えちゃうよ良いの?
って文です。GitHub上で設定しましょう。

基本的にエラー文をよく読めば解決すると思います。

改めてGitHubでリポジトリを見に行ってみます。

ここがtest.txtで、
内容がtest2ならOK!

とりあえず

何だか物凄く長くなってしまったので、

【GitHub】使用例は仮定で説明してみる
に続きます。

兎にも角にもまずはリポジトリとアドコミプッシュを覚えることが重要になります。

簡単にまとめると、

Gitでバージョン管理する時はまず

ディレクトリ(プロジェクト)作成→イニット

プログラム書いたらそのディレクトリに入れて、

アド→コミ

一連の流れとして、

mkdir→init→アドコミプッシュ

メイキンアドコミプッシュです。

次回はグループでの使用例+説明を入れるので更に単語が増えます。
まとめておこうと思います。

では、本日も閲覧感謝感謝なのです。

-その他
-

関連記事

【GitHub】使用例は仮定で説明してみる

前回の記事「GitとGitHubの違いと使い方」では 個人でプロジェクトを作る際のGitHubで公開する方法に触れました。 今回は複数人でのプロジェクト作成方法を仮定で説明してみます。 スポンサーリン …

カバー・アイキャッチ画像8

二子玉川 お散歩。

転職活動に向け紙面フォリオを作成。 続けてUnityやblender、StudioOneとかいじりだして。 独自ドメインへの移行をどうしようか悩み過ぎた結果、 ブログの更新が完全に止まっていた。。 気 …