Githubを使いこなそう†
※随時更新
※CUIメイン:特に何も書いてなければ操作は基本コマンドプロンプト(Win)かターミナル(Mac)で行います
Githubとは?†
Gitとは†
プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである(by Wikipedia)
Githubとは†
Gitを利用したソフトウェア開発プロジェクトのための共有ウェブサービスである(by Wikipedia)
つまり,Gitのリモートリポジトリのサーバー供給とかSNSっぽいこととか,そういうのを提供してくれる
これだけではなんのことかわからないと思うので,ココの入門編を読むとわかりやすい
Githubの用語†
- ローカルリポジトリとリモートリポジトリ
どちらもリポジトリ(データの貯蔵庫みたいなところ)であることに変わりはないのですが,その名の通りローカルリポジトリとはユーザのPCの中のGithubと連携したリポジトリを指します.
反対にリモートリポジトリはGithub上のリポジトリです.基本的にはローカルで作業してリモートにプッシュという流れになります.
- commit(コミット)
ファイルの追加や変更の履歴をリポジトリに保存することです.
- push(プッシュ)
ファイルの追加や変更の履歴をリモートリポジトリにアップロードするための操作です.
- branch(ブランチ)
"枝"という意味の通り,masterから分岐したデータです.例えるなら,バージョン管理のために毎回名前を付けて保存している状態が一番近いです.
- merge(マージ)
ブランチの内容を反映させます.
- マークダウン(md)ファイル
READMEとかが書かれてる形式のファイル.
普通のテキストファイルをちょっとした規則を加えて書くだけで,HTMLっぽく見せてくれるいい感じのやつ.
詳しくはココとかココを参照されたし.
Gitをインストールしよう†
Githubのアカウントを作ろう†
ココからアカウントが作れる
Github Education†
Githubのリポジトリは原則公開されるのだが,Privateリポジトリといって他人からはアクセスできないようにもできる
このPrivateリポジトリを使うためには本来は有料会員になる必要があるが,学生は無料で5つまでPrivateリポジトリが持てるようになる
※申請のためには学校から支給される「ac」の入ったアドレスが必要
※つまり「@kansai-u.ac.jp」
そのための申請はココから
ここが参考になる
Winodowsの場合†
ココから最新版をダウンロード
ダウンロードしたインストーラを起動してインストーラしますが,その際「Adjusting your PATH enviorment」という項目があるので「Use Git from the Windows Command Prompt」にチェックを入れましょう
また,「Configuring the terminal emulator to use with Git Bash」という項目があるので,「Use Windows' default console window」にチェックを入れましょう
ココが参考になります
MacOSXの場合†
普通はHomebrewが入っていたら,Githubも入ってるはず
でも一応,
- $brew update
- $brew upgrade
- $brew install git
Homebrewが入ってない人はMacOSで開発環境を構築するwithHomebrewで導入.
共通事項†
ユーザ情報を登録します.
- $git config --global user.name <username>
- $git config --global user.email <mailaddress>
ex:$git config --global user.email k030913@kansai-u.ac.jp
ちなみに,$git config --global --listで確認できる
Githubにレポジトリを作ろう†
ここではHTTPSを扱います.SSHを使いたい人は自分で頑張ってね.
ローカルリポジトリの作成†
ローカルリポジトリを作りたいディレクトリで,
- $ git init XXX
XXXはリポジトリの名前
これでローカルリポジトリが完成です.
このあと,各自必要なファイルをリポジトリ内に作ります.
とりあえず,
- touch README.md
でREADMEファイルを作成しましょう.
リモートリポジトリを作成する(初回のみ)†
githubのwebページの画面右上,「+」マークをクリック「new repository」を選択,リモートリポジトリを作成します.
Initialize this repository with a READMEにチェックをつけておきます.
Create repositoryでリポジトリが作成されるので,リポジトリのページのURLをコピーしておきます,
ローカルリポジトリとリモートリポジトリを連結させます.
- $git add *
addコマンドはcommitする前準備です.
addされたものをcommitすることになります.
add *で,変更のあったファイルは全てaddします.
ただし,add *は削除したものには対応してくれないみたいなので,ファイルの削除とかはadd -Aを使うといい.これでレポジトリ内の追加・更新・削除全てに対応してくれるはず.
add README.mdというように,ファイルを指定することも可能です.
- $git commit -m "XXX"
commitコマンドでaddしたもの=ファイルの更新履歴を作成します.
cloneする†
- $git clone XXX
XXXはclone先のURL
cloneコマンドで,既にあるリモートリポジトリを自分のローカルリポジトリ内にclone(コピー)できます.
ローカルリポジトリの変更内容をリモートリポジトリに反映させる†
ローカルリポジトリで,
- $git add *
- $git commit -m "XXX"
add *で変更があったものをあげて,commitコマンドで変更履歴を作成しました.
- $git push origin master
これで完了です.
リモートリポジトリの変更内容をローカルリポジトリに反映させる†
ローカルリポジトリで,
- $git pull origin XXX
XXXはbranchの名前です.
branchを使う†
まずは現在のbranchを確認してみます.
- $git branch
これで現在のローカルリポジトリのbranch一覧を確認できます.
アスタリスクがついているのが今いるbranchです.
まだbranchを作ったことがない,という場合はmasterというbranchのみになっているはずです.
早速新しいbranchを作ってみます.
- $git branch XXX
これでXXXという名前のbranchを作ることができます.
$git branchで確認してみると,新しいbranchが一覧に追加されているはずです.
でも,まだ以前のbranch上にいたままになっています.
ということで,branchを移動します.
- $git checkout XXX
これでXXXという名前のbranchに移動することができます.
$git branchで確認すると,移動できたことが確認できるはずです.
これで,この後はcheckoutコマンドでbranchを移動しない限りは,PCをシャットダウンしてもbranchは変わりません.
このbranchの変更内容をpushするときは,$git push origin XXXというように,XXXのところをbranchの名前にします.
※これまでの部分ではbranchはmasterだったので,$git push origin masterとなっていました.
※pullの場合も同様に$git pull origin XXXです.
branch関連で役立ちそうなコマンドたち†
- $git branch -m XXX YYY
XXXという名前のbranchをYYYに名称変更
- $git branch -m YYY
今開いているbranchの名前をYYYに変更
- $git branch --delete XXX
HEADにmergeしたbranch,XXXを削除する
- $git branch -D XXX
branch,XXXを削除する
- $git branch --remote
リモートリポジトリの全branchを表示する
- $git push --delete origin XXX
- $git push origin :XXX
リモートリポジトリにあるbranch,XXXを削除する
- $git branch --all
ローカル,リモートリポジトリの全branchを表示する
branchをmergeする†
branchで作成したシステムがきちんと動くようなら,いつまでもbranchをわけておくのも鬱陶しいです.
必要に応じて,branchでの変更内容を元のbranch(masterとか)に取り入れましょう.
- git checkout XXX
まずは変更を反映させたいbranchに移動します.
「反映したい」branchではないので要注意です.
- $git merge YYY
mergeコマンドで,現在のbranchにYYYというbranchで行った変更を取り込むことができます.
競合が発生していなければ,XXXの中身はYYYの中身に変わっているはずです.
競合があった場合,警告文が出て,競合箇所にそうとわかるように記述が入っています.
頑張って競合を潰しましょう.
14_Ishikawaに戻る
14membersに戻る
Membersに戻る
Homeに戻る