gitはプログラミングでバージョン管理をするのに欠かせないツールになっている。 githubは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はgit管理しているプロジェクト(リポジトリ)をインターネット上に紐付けて、他PCからでも共有できるようにしたサイトである。
またコードレビューという他の人から描いたコードにアドバイス等をもらうようなこともできるらしい。
使い方としては、まずgithubに自分のアカウントを作る。
githubのページに行けば登録ページのボタンがあるのでその指示に従う。
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.
これからリモート、ローカルという言葉が出てくるが、リモートとは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>