トップ «前の日記(2009年09月17日(Thu)) 最新 次の日記(2009年09月24日(Thu))» 編集 RSS feed

shinoのときどき日記


2009年09月21日(Mon)

githubのgistを利用する

GitHubには大きくわけて2つのエリアがあります。ひとつは複数のファイルを束ねて管理するリポジトリ。もうひとつは単体のファイルを管理するGistです。今回、GitHubのGistにファイルを作成し、ローカルにpull(ダウンロード)したり、push(アップロード)してみました。

前提

global git configを設定する

https://github.com/account にある、"Global Git Config"をクリックすると、次のようなコマンドがでてきます。

git config --global github.user "your user name"
git config --global github.token "your token id"

その通りにコマンド(git config)を打つと、$HOME/.gitconfigに次の3行が追加されます。

 [github]
         user =  "your user name"
         token = "your token id"
$HOME/.ssh/configを設定する
 1 Host    github.com
 2         User    git
 3         Hostname        github.com
 4         PreferredAuthentications publickey
 5         IdentityFile /home/hoge/.ssh/id_rsa

※この設定は、ダウンロード(clone,pull)するだけならばいりません。アップロード(push)するときに必要です。

Webで、Gistを作成する。

http://gist.github.com/ で、適当な内容を作り、"Paste"すると新規にGistが作成されます。

以下、対象Gistを、 http://gist.github.com/189008 を例にします。

githubのgistからダウンロード(pull)する

初回時
%cd $HOME/local/work/gist
%git clone git@gist.github.com:189008.git ./gist-189008
Initialized empty Git repository in /home/hoge/local/work/gists/gist-189008/.git/
Enter passphrase for key '/home/hoge/.ssh/id_rsa':
Pushing your gist...
remote: Counting objects: 17, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 17 (delta 3), reused 0 (delta 0)
Receiving objects: 100% (17/17), 2.16 KiB, done.
Resolving deltas: 100% (3/3), done.
%ls
gist-189008
%cd gist-189008
%ls
github-signup
二度目以降
%git pull
Enter passphrase for key '/home/hoge/.ssh/id_rsa':
Pushing your gist...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From gist.github.com:189008
   fbed720..f0e6a5d  master     -> origin/master
Updating fbed720..f0e6a5d
Fast forward
 github-signup |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

ローカルで編集し、githubのgistsを更新する

ローカルで編集分をコミットする
%git commit -a -m "del amazon url"
[master 0089e65] del amazon url
 1 files changed, 0 insertions(+), 1 deletions(-)

最終行のamazonのurlをdelしたとメッセージを入れてコミットします。

github上のgistsにアップロード(push)する
%git push origin master
Enter passphrase for key '/home/hoge/.ssh/id_rsa':
Pushing your gist...
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 270 bytes, done.
Total 3 (delta 1), reused 1 (delta 0)
To git@gist.github.com:189008.git
   f0e6a5d..0089e65  master -> master

まとめ

%git clone <対象とするgit> <ダウンロードディレクトリ>
%vi ダウンロードディレクトリ/ターゲットファイル
(適当に編集します)
%git commit -a -m "変更メッセージ"
(このコミットはダウンロードしてきたローカルのリポジトリに対してです)
%git push origin master
(リモートにあるgithub.comに対して、更新をかけます)
Tags: git

gistsを便利に使うgisty

GitHubのGistはちょっとしたサンプルコードや、単体のコードを置くのに便利です。ただ、最初のGistの作成はgitコマンドからはできず、Webからでないとできませんが、gistyをインストールするとコマンドラインからGistの新規作成およびcloneができるようになります。

前提条件

gistyのインストール

%gem sources -a http://gems.github.com
%setenv RB_USER_INSTALL true
%gem install nokogiri
%gem install swdyh-gisty
%vi ~/.cshrc
setenv GISTY_DIR $HOME/local/work/gists
%rehash

gisty利用時の作業ファイル

gistyを利用したときの作業ファイルは、gisty適用前と適用後で変わります。

適用前
hoge/aa.txt
gisty適用
%cd hoge
%gisty post aa.txt

GitHubにGistが新規に作成され、ローカルにcloneされます。clone先は、先に設定した、$GISTY_DIR/配下です。

適用後
%cd $GISTY_DIR/<gist_id>/
%ls
aa.txt

ローカルにclone(初回ダウンロード)されるのは、$GIST_DIRの下で、新規に作成された<gist_id>が振られたディレクトリが作られ、その下に当該ファイルができます。

ローカルでの編集およびコミット、pushは、以降、この $GIST_DIR/<gist_id>/aa.txt で行います。

gistyの便利な点

$GIST_DIRを見ても、数字のディレクトリが並ぶだけで、どこに目的とするファイルがあるかわからなくなるのですが、gisty listを使うと、パブリックおよびプライベートの属性、ファイルの場所がわかりやすく参照できます。

%cd $GIST_DIR
%ls
189008                  190336                  444e99328812038e7c26
%gisty list
- public gist -
190336: README.txt
189008: github-signup
- private gist -
444e99328812038e7c26: README.txt
Tags: git

トップ «前の日記(2009年09月17日(Thu)) 最新 次の日記(2009年09月24日(Thu))» 編集 RSS feed
2000|03|
2007|01|03|04|05|06|10|12|
2008|01|02|03|04|05|06|07|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|11|12|
2015|01|02|04|05|09|10|12|
2016|01|03|04|05|08|
2017|01|02|04|05|06|07|08|09|10|
2018|05|06|
2019|08|12|
2020|01|03|04|
2021|01|12|
2022|01|09|11|
2023|01|