[git]gitに入門してみた

Posted on 7月 3, 2008
Filed Under zsh, git, perl |

svn使ってます
myappの下には、trunk, tags, branches がある状態

CODE:
  1. git svn init -s https://path/to/myapp/ myapp
  2. cd myapp
  3. git svn fetch

これに時間かかる

CODE:
  1. git checkout trunk

これがちょっぱやでびびるなぁ

編集した後、

CODE:
  1. git add file1 file2 file3
  2. git commit -m"[edited file1,2,3]"

ローカルへのコミットは気軽にしていいみたい

perlのcatalystアプリで、myapp_local.yml とかもろもろローカルで変更しているのがあるので、
そいつらがある状態で
svnにコミットしようとすると、

CODE:
  1. Cannot dcommit with a dirty index.  Commit your changes first, or stash them with `git stash'.

って怒られる

CODE:
  1. git stash

ってやるとmyapp_local.ymlとかdirtyなファイル達がどっかに退避されるみたい

そこで

CODE:
  1. git svn dcommit

するとsvnにコミットできる

CODE:
  1. git stash apply

ってやると退避したのが帰ってくる。

そして
18:09 zsh の prompt に git のブランチ情報を表示
これやるべし、と思ったけど、書いてあるようにハッシュ値が出ますよ!
今のcoderepos版でも。

gitのとこ、↓こうしたら一時的にokだったけど、まだだめみたい。

PERL:
  1. # git
  2. if (-d "$path/.git" && -f "$path/.git/HEAD") {
  3.     my $branch;
  4.  
  5.     my $head = file("$path/.git/HEAD")->slurp;
  6.     chomp $head;
  7.  
  8.     if ($head =~ /^\w{40}$/) {  # no local branch?
  9.         #my $refs = qx( grep $head -l $path/.git/refs/remotes/{,**/}* );
  10.         #if ($refs =~ m!.git/refs/(\S+)!) {
  11.         #    $branch = $1;
  12.         #}
  13.         my $refs = qx( grep $head $path/.git/info/refs );
  14.         if ( $refs =~ m!refs/remotes/(\S+)!) {
  15.             $branch = $1;
  16.         }
  17.     }
  18.     elsif ($head =~ m!ref: refs/heads/(\S+)!) {
  19.         $head = $1;
  20.     }
  21.  
  22.     print '(', ($branch || $head), ')';
  23.     exit;
  24. }

なんとかしたいなー

Comments

One Response to “[git]gitに入門してみた”

  1. mash on 7月 5th, 2008 11:23

    trunkとかbranches/* とかは、
    リモートにある名前と同じ名前でローカルブランチをつくるのが常道みたい

    git checkout remotes/trunk
    git branch trunk

    で、trunkっていうbranchができる

    そこで

    git svn rebase

    ってすると、リモートのsubversionのtrunkの最新をとってくる。
    branches/* でもいっしょ

    nrhd-

Leave a Reply