Git Github理解への道

今日は…

GIT! GITHUB! こいつらの使い方をマスターしてやります!
<余談>春休み、もっと効率よくwebの勉強がしたいと思って、インターン申し込みました。面接しなければ…。
そういえば、ブログ三日坊主になりそうな気がしてならないですが、ブログを書くことで理解がより深まることを実感しているのでそんなことにはならないでしょう。失笑</余談>
では早速いきましょう〜!今日は幾つ不明な箇所を克服できるでしょうか?(なんか今日はhtmlのtable tagを使ってみたりしたい)

不明点1

縦棒の役割とは??

shellscriptとかみてると、”|”(縦棒)が登場します。これは一体何を表すのか。
調べてみるとこれは、 縦棒(|)は「パイプ」と呼ばれ、1つめのコマンド(パイプの左側)の「標準出力」を2つ目のコマンドの「標準入力」に渡す働きをします。
(echo "Thank you for your access!") | nc -l 8000
っていうスクリプトが出てきたんですが、これは左側の標準出力は"Thank you for your access"なので、これをnc -l 8000コマンドに受け渡しているという意味です。
nc -l 8000 とはなんでしょうか。
ncはNetCatの略、NetCatとはサーバーとクライアントの情報の送受信に関するコマンドで、特にWebサーバーからの情報の取得や、メールの送信などの様々な機能があるらしいです。
ここでは、8000 というポートを使ってサーバーとして起動し、アクセスがあったら、標準入力の内容("Thank you for your access")を返して終了するという意味になっています。
NetCatと似た感じのコマンドでtelnetっていうのもあるそうです〜こっちはもっと遠隔のコンピューターに接続する方に特化してるっぽい(?)

不明点2

HTTPとは?TCPと何が違うんだろうか

このサイトわかりやすい!
上のサイトから引っ張ってきたんですが、

シーケンス 説明
1 利用者がWebブラウザにURLを入力してEnterキーを押す。
2 Webブラウザは指定したWebサーバにHTTPリクエストを送信して、Webページのデータを要求。
3 Webサーバは、Webブラウザから受信したHTTPリクエストを解析。
4 Webサーバが、Webブラウザに要求されたデータをHTTPレスポンスとして返信。
5 Webブラウザは、受信したデータを解析してWebページとして表示。


的な感じでHTTPは使われているそう。あと"HTTPはTCPプロトコル上で動作しており、Webサーバにアクセスするために使用しているポート番号は80。”
とも書いてありました!TCP( TransmissionControlProtocol)をベースにして接続が行われて、HTTP(HyperTextTransmissionProtocol)でHTML の情報が引き出されるそうです。
HTTPSというのもみますが、HTTPのなかのパスワードなどの個人情報を暗号化して通信するprotocolのことを言います。SはSecureの意味らしいです。
nc nnn.ed.jp 80
というNetCatを使ったコマンドがありますが、これは「 nnn.ed.jp というホスト名で表されるサーバーの 80 番ポートに接続する」を表し、
このホスト名というのはDNS(DomainNameSystem)を用いてIPアドレスに変換可能であるそう。このホスト名をドメインと呼ぶこともあります。
ちなみに、確認するとIPアドレスがサーバーorクライアントのネットワーク上の住所を表し、Portがその家の扉を表ます。
例えば、port番号が80だとすると、80番扉を使用するという意味を持ちます。大抵サーバー側の扉をいつも開いていて、クライアントは接続ごとに閉じるらしいです。
Portとは?
サーバーを自分で立てることもでき、同時にLinuxのportへの通信をmacOSのポートを同期させるようなport forwardっていうのもできます。

不明点3(ようやくGIT/GITHUB)

GITHUBの使い方がいまいちつかめていない…

(GITHUB)FORKとはなんのための機能なのか?

ForkはOriginalの開発に参加する意思を表すもので、Forkするとは自分のアカウントにリモートリポジトリのコピーを作成すること。
ここで用語確認、なんかリポジトリディレクトリ、リダイレクトなど色々混ざってきているけど。。

用語 意味
repository 英語でいう、倉庫・貯蔵庫。eg)nuclear waste repository 核廃棄物貯蔵所
GITHUBでコードが保存される場所をいう。
directory 英語でいう、住所氏名録。eg)directory of main offices and branch offices
パソコン内のファイルの位置を表す。
redirect 直訳は向きを変更すること。eg)redirect economic policy
(コマンド)> (ファイルディレクトリ)でコマンドの標準出力をファイルに記述させる。
(GITHUB)その他の機能

 めっちゃまとまっていた
issueとかwikiとかgistとかあります!wikiとgistはmarkdown方式で書かなければいけないので注意
他の人の作った李リポジトリにissueを残すこともできるし、自分のリポジトリにもissueをかける。
Forkしたリポジトリについては、ForkがもともとOriginalを改善(patch)するための機能なのでissueは自分で設定をいじらないとできないようになっている

不明点4(ようやくGIT/GITHUB)

GITがなんのためのものなのか全然把握してない

GITで何ができるか

GITというソフトウェアをinstallすると、GitHUB上のファイルを自分のマシンでも編集できるようになる。
GITHUB上のファイルを自分のマシンでいじるには、GITHUBにログインしないといけない、そこで使うのがsshである。
ubuntuを使う時も、毎回vagrant sshubuntuにログインしている。そのubuntuでさらに GITHUBにログインすればGITHUBのファイルをGITを用いてubuntuからいじれるのである。理解してきた(楽しい)
ちなみにsshはSecureShellの略称でセキュアな通信を行うためのプロトコルで、HTTPなどと同次元。
もちろんGITHUBssh(ログイン)するためにはユーザー名とパスワードが必要。
ここで、自分のマシン(ローカル)で公開鍵と秘密鍵を生成して、公開鍵をGITHUBに登録し、登録された公開鍵に対応した 秘密鍵を持っているクライアントのみが接続できます。 「パスワード認証」と比べ事前の準備が必要となるが、安全性は高い
sshについて詳しいyo
この次にやらないといけないことは、自分のアカウントのリポジトリ(リモートリポジトリ)と同じものを自分のマシンの内部に作ること(=clone)
cloneとForkは原理的には同じ、違う点は「誰の」ディレクトリを「どこの」ディレクトリに複製するかという点
cd workspace
git clone git@github.com:${あなたのusername}/${ファイル名}.git
のコマンドで自分のマシン内にworkspace/${ファイル名}というディレクトリができている、これはGITHUBに上がっているやつと全く同じ
今後GITHUB上でcommit(ファイルの編集)があった場合、
"""リポジトリとなっているディレクトリにchangeDirectoryしてから"""
git pull origin gh-pages
を使えば、最新の状態にupdateしてくれます。リモートリポジトリの内容をローカルリポジトリに引っ張ってくることをpullと言います。

GITの本来の役割はpushである(?)

自分のマシンでの編集をGITHUBにも適用させるために使うコマンドがpushである
でもpushの前にまず自分のローカルディレクトリと、リモートディレクトリを繋げる操作が必要である。
自分のマシンにディレクトリを作成するところから、それをアップロードするまでを順番に書いていく。

  1. ###Linuxにgit-newを作成
    cd ~/workspace
    mkdir git-new
    cd ~/workspace/git-new
  2. ###gitリポジトリをここに作成(.../git-new/.gitというディレクトリが作成される)
    git init
  3. ###このディレクトリに適当なファイルを作る(git-newのなかにREADME.mdができる)
    echo 初めてのpush | README.md
  4. ###ファイルをGITHUBにあげたいという願望を出すコマンド
    git add README.md
  5. ###このファイルをGITHUBにあげる動作に名前をつける eg.ボタン修正
    git commit -m "これが初めてのpush"
    ちなみにこの”-m”はcommit messageの "m"
  6. ###GITHUBに最初に作ったディレクトリと同じレポジトリを作る
  7. ###…or push an existing repository from the command lineに書いてあるコマンドを用いて、レポジトリにローカルディレクトリ内容を入れる
    • ###ローカルディレクトリ(~/workspace/git-new)のoriginをリモートディレクトリのgit-new.gitに設定
      git remote add origin git@github.com:${あなたのusername}/git-new.git
    • ###今設定したoriginにディレクトリを適応させる
      git push -u origin master

プログラミングってやってて思うけど、最初に覚えることが多いね!疲れます。