Git, Github

gitはプログラミングでバージョン管理をするのに欠かせないツールになっている。 githubはgitによって管理されているプロジェクトをインターネット上の自分のアカウントに保存でき、 プロジェクトを公開すれば他の人とプログラムを共有できる。




gitのインストール


まずはgitをインストールする。

$ sudo apt install -y git #debian系linuxの場合
$ brew install git #macosの場合

次にgitでcommitというコマンドを実行するために、gitconfigの設定をする。

$ git config --global user.name '<自分の名前(任意)>'
$ git config --global user.email '<自分のメールアドレス>'

ここで、--globalとしているがこれはPCの中の各ユーザーごとという意味で、同じユーザーで使う分には何も言われなくなる。
--systemとすると同じPCからなら、他のユーザーでもgitのcommitができる用になる。
--localの場合は、gitで管理しているリポジトリという単位ごとで管理することになる。

githubの使い方


githubはgit管理しているプロジェクト(リポジトリ)をインターネット上に紐付けて、他PCからでも共有できるようにしたサイトである。
またコードレビューという他の人から描いたコードにアドバイス等をもらうようなこともできるらしい。

使い方としては、まずgithubに自分のアカウントを作る。
githubのページに行けば登録ページのボタンがあるのでその指示に従う。

SSHの設定

githubからリポジトリを自分のPCに持ってくるとき、 自分のリポジトリをgithubに紐付けるときにはgithub側のアドレスを使う必要がある。
このときhttps, sshを選ぶことができるが、ここではsshを使う場合を説明する。

まずは、登録したいPC側でssh鍵を生成する。詳しいやり方はここを参照のこと。
次に、githubにログインして設定(settings)からSSH and GPG keysのページに飛び、New SSH keyのボタンを押す。 そうするとタイトルとkeyを入れる画面が出てくるので、タイトルに接続する機器のわかりやすい名前(任意)を、 Keyに先程作った公開鍵(.pubの方)をコピペで入力してAdd SSH keyを押して新規登録する。
その後、これを参考にコンフィグファイルを登録したPCの~/.ssh以下に作る、 または追記する。ここで接続するユーザーはgitを使うことに注意

例:
Host github github.com
  HostName github.com
  IdentityFile ~/.ssh/<秘密鍵の名前>
  User git

接続できるかを確認する場合は、以下のコマンドでテストしてHi <アカウント名>! ...というメッセージが出れば成功。

$ ssh -T github
Hi <アカウント名>! You've successfully authenticated, but GitHub does not provide shell access.

git/githubでよく使うコマンド/オプションまとめ


これからリモート、ローカルという言葉が出てくるが、リモートとはgithub、別のPC等にあるリポジトリのこと、 ローカルとは自分が今操作しているリポジトリを意味している。

既に存在するディレクトリ内のファイル/ディレクトリを新しくgitで管理する場合の初期化コマンド

$ git init

ファイル、ディレクトリをgitの管理下に置く、あるいはファイル変更後にするコマンド、"."で今いる場所にあるファイルを全て管理下に置くようにできる。

$ git add <ファイル or ディレクトリ名>
$ git add .

変更をcommitをする(コメントをつけて、変更履歴に登録する)ためのコマンド。 これで以前の変更に戻したり、変更内容を遡って確認できたりすることができるようになる。
また、-mオプションでコメントを一行に収めるようにもしてくれるらしい。

$ git commit "コメント"
$ git commit -m "コメント"

ブランチ(別バージョン)を新しく作る場合

$ git branch "ブランチ名"

今いるリポジトリの中身を違うブランチにしたい時

$ git checkout "ブランチ名"

何も入っていないリモートリポジトリを今いるリポジトリに紐付けたい時(新しくgithubで管理する時)は、 以下のコマンドを実行(このコマンドを打つ前に、github側でリポジトリを新規作成しておく)

$ git init
$ git add .
$ git commit -m "first commit(別にfirst commitでなくてもいい)"
$ git remote add origin <githubのリポジトリのアドレス(https または ssh)>

githubのリポジトリのアドレスはgithub側で新しいリポジトリを作った際に生成されるのでそれを入力(上記の流れも新しく作ったリポジトリのページに書いてある)。 因みにsshのアドレスはgithubでsshの設定をしていないと使えないので注意。

github等リモートリポジトリにローカル側のコミット(変更)を反映させる。

$ git push origin <ブランチ名>

リモートリポジトリの変更を取得する

$ git fetch

リモートリポジトリの変更をローカルリポジトリに反映する場合は

$ git fetch
$ git merge origin/<ブランチ名>
または
$ git pull

他のブランチ(ここではブランチ2とする)の内容を今のブランチに統合する場合

$ git merge <ブランチ2>