GitHubの使い方を全く知らない人に説明するための手順書です。
※社内向けに書いた記事の再掲です。
まず、githubのアカウントをとろう
- https://github.com/
- freeでOK
githubにアクセス可能にする(社外)
github に SSH 公開鍵を登録する。リンク先参照。
GitHubにSSH公開鍵登録
Cygwinにgitを入れる(ついでに、wget と vi と gcc も入れておくと良し)
Git初期設定
githubにアクセス可能にする(社内)
プロキシ経由でアクセスできるようにする。「githubにアクセス可能にする(社外)」をやってあるものとする。
wgetを使いたいので、http プロキシを利用するように、HTTP_PROXY 環境変数を設定する。.bash_profile に以下を追加する。
export http_proxy=http://[プロキシユーザ名]:[パスワード]@プロキシサーバ名 export HTTP_PROXY=$http_proxy export HTTPS_PROXY=$HTTP_PROXY export https_proxy=$HTTPS_PROXY
反映
source ~/.bash_profile
connect (SOCKSプロキシ中継ツール)をインストールする。
wget http://www.meadowy.org/~gotoh/ssh/connect.c gcc connect.c -o connect.exe mv connect.exe /usr/bin
設定1)
※ git clone git@github.com:yourname/repositoryname.git のように SSH プロトコルでプロキシを介してアクセスするための設定
~/.ssh/config をいじる(なければ新規作成)。以下を追加
Host github.com Hostname github.com ProxyCommand /usr/bin/connect -S [SOCKSサーバユーザ名]@[SOCKSサーバ名]:1080 %h %p User git IdentityFile ~/.ssh/id_rsa
~/.bash_profile にSOCKSプロキシパスワードなどを登録しておく。以下を追加。
export SOCKS5_USER=[あなたのSOCKSサーバユーザ名] export SOCKS5_PASSWD=[あなたのSOCKSサーバパスワード]
反映
source ~/.bash_profile
ssh接続できるか試す
ssh -v git@github.com
以下のように表示されれば成功
....ずらずら PTY allocation request failed on channel 0 Hi [あなたの名前]! You've successfully authenticated, but GitHub does not provide shell access. Connection to github.com closed.
成功しない場合は、鍵の場所が違うとか、.ssh/config が読み込まれていないとか、疑ってみよう。頑張れ。
設定2)
※ git clone git://github.com/yoruname/repositoryname.git のように GIT プロトコルでプロキシを介してアクセスするための設定
/usr/bin/git-proxy ファイルを以下の内容で作成する。
#!/bin/sh /usr/bin/connect -S [SOCKSサーバユーザ名]@[SOCKSサーバ名]:1080 $1 $2
実行許可をだしておく。
chmod a+x /usr/bin/git-proxy
~/.bash_profile にGIT_PROXY_COMMAND環境変数を設定し、上のシェルスクリプトを利用するように登録しておく。
export GIT_PROXY_COMMAND=/usr/bin/git-proxy
反映
source ~/.bash_profile
接続できるか試す
git clone git://github.com/yourname/repositoryname.git
※パスワードなどは、上で設定した SOCKS5_USER, SOCK5_PASSWD 環境変数から読み込まれます。
リポジトリ追加(管理者)
から「New Repository」で。
初回 init する(管理者)
リポジトリ作成時にやり方が出てくるが、例えば yourname に repositoryname リポジトリを作成した場合は、以下のようにしろと言われる。
mkdir repositoryname cd repositoryname git init # ローカルリポジトリを初期化 touch README git add README # ローカルリポジトリにファイルを追加 git commit -m 'first commit' # ローカルリポジトリにコミット git remote add origin git@github.com:yourname/repositoryname.git # リモートリポジトリをoriginという名前で登録 git push origin master # ローカルリポジトリのmasterブランチをリモートリポジトリ(origin)に反映(push)
developブランチも切ってみる。
git branch develop git push origin develop
初回 cloneする(個別開発者)
yournameのrepositorynameリポジトリをローカル作業用にダウンロードする。
git clone git@github.com:yourname/repositoryname.git
リポジトリを切り替える(個別開発者)
clone した直後だと、リモートレポジトリに複数のブランチが存在したとしても、ローカルリポジトリには master ブランチしかない。
git branch -a * master remotes/origin/master remotes/origin/develop
リモートリポジトリの develop ブランチをローカルレポジトリに持ってきて作業したい場合は、
git checkout -b develop origin/develop
とする。
git branch -a master * develop remotes/origin/master remotes/origin/develop
ファイルを変更して push する(個別開発者)
カレントディレクトリ以下の新規ファイル全てをadd登録する(必要あれば)
git add .
変更ファイルを自動検知(-a)してローカルリポジトリにcommit
git commit -a -m '追加した'
ローカルリポジトリをリモートリポジトリ(origin)に反映。例えば現在のローカルリポジトリのブランチが develop の場合、以下のようにする。
git push origin develop
他人の変更を fetch する(個別開発者)
他人が github にアップロードした変更点をローカルリポジトリにダウンロード(fetch)してくる。
git fetch origin develop
ただし、これはローカルリポジトリの remotes/origin/develop ブランチにダウンロードしてきただけなので、
その変更をローカルリポジトリのカレントブランチ(今回はdevelop)に反映するには、以下のようにする。
git merge origin/develop
ちなみにこの2つの操作は以下のコマンド1つの操作で行うことも可能。
git pull origin develop
git 使い方詳細
以下参照。もしくはググること。
参考文献
- Git入門 http://www.amazon.co.jp/%E5%85%A5%E9%96%80Git-%E6%BF%B1%E9%87%8E-%E7%B4%94-Junio-Hamano/dp/4798023809/ref=sr_1_2?ie=UTF8&qid=1306943378&sr=8-2
- gitとsubversionのコマンド対応表 http://blog.cyclogy.com/2011/05/05/git_subversion/
- github - gitの使い方 http://za.toypark.in/html/2009/02-19.html#s1.3
- Git入門 - マニュアルの翻訳 http://www8.atwiki.jp/git_jp/
git-flow
A successful Git branching model http://keijinsonyaban.blogspot.com/2010/10/successful-git-branching-model.html という Git のうまい運用方法を論じた記事がある。ので、読んでおくこと。
この運用方法に沿った形で git を運用するための補助ツールとして git-flow http://d.hatena.ne.jp/Voluntas/20101223/1293111549 というものがある。ということで、使おう。
git-flow インストール
ここみよう
インストール
wget --no-check-certificate -q -O - https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sh
確認
git flow usage: git flowAvailable subcommands are: init Initialize a new git repo with support for the branching model. feature Manage your feature branches. release Manage your release branches. hotfix Manage your hotfix branches. support Manage your support branches. version Shows version information. Try 'git flow help' for details.
git-flow 使い方
新しくローカルリポジトリを作る場合
git flow init Initialized empty Git repository in /home/nseo/.git/ No branches exist yet. Base branches must be created now. Branch name for production releases: [master] Branch name for "next release" development: [develop] How to name your supporting branch prefixes? Feature branches? [feature/] Release branches? [release/] Hotfix branches? [hotfix/] Support branches? [support/] Version tag prefix? []
featureブランチ
新規機能開発用 feature ブランチを切る。
git flow feature start ticket_500 Switched to a new branch 'feature/ticket_500' Summary of actions: - A new branch 'feature/ticket_500' was created, based on 'develop' - You are now on branch 'feature/ticket_500' Now, start committing on your feature. When done, use: git flow feature finish ticket_500
ブランチを確認
git branch develop * feature/ticket_500 master
ここでfeature/ticket_500ブランチで作業をする
こまめにコミット
git ci -a -m 'hogehoge finished'
最後にfinishするとdevelopブランチにマージされ、feature/ticket_500ブランチが消去される
git flow feature finish Switched to branch 'develop' Already up-to-date. Deleted branch feature/ticket_500 (was d4c5a02). Summary of actions: - The feature branch 'feature/ticket_500' was merged into 'develop' - Feature branch 'feature/ticket_500' has been removed - You are now on branch 'develop'
確認するとたしかに消えている
git branch * develop master
その他
あとは git-flow http://d.hatena.ne.jp/Voluntas/20101223/1293111549 を見ておくこと。
git flow release start タグ名 git flow release finish タグ名 git flow hotfix start タグ名 git flow hotfix finish タグ名
なんかもあるので。