Webtech Walker

覚えておくと便利なgitのtipsをいくつか

頻繁に使うわけではないけど便利なgitのtipsをいくつか紹介。というか自分が忘れるからメモ。

git stash

現在作業中のbranchでまだコミットはしたくないけど、trunkで直さないといけないバグとかが見つかったときに、今の変更を横にどけておくコマンド。

$ git stash

で変更をいったん横にどけておいて、他のbranchに切り替えて作業後、今のbranchに戻ってきて

$ git stash pop

とすれば横にどけておいた変更が復活する。

git ignore

プロジェクトの中で除外する必要があるファイルは.gitignoreに書くけど、自分の環境だけで除外したいファイルがある場合は.git/info/excludeに書くのがよいです。

自分の環境ではいつでも除外したいというときは

$ git config --global core.excludesfile $HOME/.gitignore

として、$HOME/.gitignoreに除外したいファイルを書いておけばOKです。

git svn clone -s

git svnでcloneするときにsvnのbranchとかtagも認識させるには

$ git svn clone http://svn.repos/project -T trunk -b branches -t tags

とします。もしsvnのリポジトリの構成が上記のように標準的な構成(trunk、branches、tags)であれば下記のようにするだけでOKです。

$ git svn clone http://svn.repos/project -s

git reset

git resetはコミットを取り消すことができます。よく使うのは

$ git reset HEAD^

で直前のコミットを取り消すとか。

git commit –amend

直前のコミットを修正したいときはcommit –amendが便利です。

$ git commit(間違ったコミット)

間違えを修正して

$ git commit --amend(直前のコミットが置き換えられる)

git add -p

同じファイルだけど一部の変更だけコミットしたいというときはgit add -pを使います。diff形式で変更部分を記録するか聞いてくるので、記録したい部分だけyと応えればOKです。

$ git add -p
diff --git a/Root.pm b/Root.pm
index 707f4e8..891bd77 100644
--- a/Root.pm
+++ b/Root.pm
@@ -6,9 +6,6 @@ has '+namespace' => default => '';
 # default 404 handler
 sub default :Path :Args {
     my ($self, $c) = @_;
-
-    $c->res->status(404);
-    $c->res->body('404 Not Found');
 }

 sub index :Path :Args(0) {
Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? n
@@ -23,7 +20,8 @@ sub index :Path :Args(0) {

 sub index :Path :Args(0) {
     my ($self, $c) = @_;
-    $c->res->body('Ark Default Index');
+
+    $c->stash->{entries} = models('Entry')->get_entries;
 }

 1;
Stage this hunk [y,n,q,a,d,/,K,g,e,?]? y

git config alias

gitのcommitとかcheckoutなどのよく使うコマンドにはalias貼っておくと便利です。checkoutのaliasにcoを設定するには以下のようにします。

$ git config --global alias.co checkout

僕が設定してるのはこんな感じ

$ git config -l
alias.co=checkout
alias.ci=commit
alias.st=status
alias.br=branch
このエントリーをはてなブックマークに追加