riywo memo

Feb 25 2009

Gitまとめ

クライアント側:

まず適当にgitを入れる.

$ sudo apt-get install git-core  #Ubuntu
$ sudo port install git-core  #MacOS

とりあえず最初にGlobal設定(Git環境全体の設定で,これからやるすべてのGitレポジトリに 適応される).用は,いつもつかう設定書いておけと言うこと.

git config --global user.name riywoみたいに設定してもいいけど, 面倒なので~/.gitconfigを書いておく.コピペでOKのはず.あと,~/.gitignoreもね.

.gitconfig

[user]
        name = riywo
        email = riywo@example.com
[core]
        excludesfile = /home/riywo/.gitignore
        editor = emacs
[diff]
        color = auto
        rename = copy
[pager]
        color = true
[color]
        status = auto
        branch = auto
        interactive = auto
[github]
        user = riywo                 
        token = ***********************

.gitignore

*~
#*#
.#*
.DS_Store

Githubの情報はGithubでアカウント作れば取得できるはず.適当にやる.

既存の自分レポジトリを(例えばGithubから)Cloneするなら

$ git clone git@github.com:riywo/plagger.git

とすれば,カレントディレクトリにplaggerというフォルダができ,その中に ファイルが収納されます.Githubでは「git://」で始まるURLの場合には cloneすることしかできません.Pushしたければ,Adminの人に連絡して Repository Collaboratorsにしてもらうか,Forkして自分のレポジトリで 管理する.

新しく,もしくは存在するフォルダをGitで管理するなら

$ cd mydir
$ git init
$ git add *
$ git commit -a -m 'Initial'

これでmydirの中身がローカルレポジトリに入ったので,あとはリモートを設定して送るだけ.

$ git remote add origin git@github.com:riywo/myapp.git
$ git push origin master    

リモート側

Githubなどだったら,Webインタフェースで適当に作れるはず. その際,SSHの公開鍵認証を使う場合が多いので,公開鍵を送っておき, keychainを使うようにすると便利.

自分でリモートを立てる場合

$ mkdir /var/git/myapp.git
$ cd /var/git/myapp.git
$ git --bare init

こんな感じ.認証はSSH公開鍵を普通に設定しておけば,クライアントから

$ git clone ssh://riywo@example.com/var/git/myapp.git

でさくっとできるはず.

通常の使い方TIPS

基本

  • 最新に
    • git pull
  • ファイルを追加したら
    • git add *
    • git commit -a
  • ファイルを編集・削除したら
    • git commit -a
  • リモートに送るなら
    • git push

試してみる

- git rm --cached <filename>
- git revert
- git reset --soft
- git reset --hard
- git pull --rebase

Branch

$ git branch experimental
$ git branch

存在する全てのブランチのリストが表示されます:

$ git checkout experimental
(edit file)
$ git commit -a
$ git checkout master

experimental ブランチで変更した後、master ブランチに戻っている為、変更した内容がもはや見えなくなっていることを確認してください。

(edit file)
$ git commit -a

この時点で2つのブランチは分岐しました。それぞれ異なる変更が行なわれています。 experimental の変更を master にマージするには、以下のようにします。

$ git merge experimental

変更がコンフリクト(競合)しない場合は、これでマージ完了です。コンフリクトがある時は、マーカーが問題のあるファイル内に残り、コンフリクトを示すでしょう。

$ git diff
(edit)
$ git commit -a

Fork

だめだ,知らんことが多すぎる.勉強が必要だ.

リンク

Page 1 of 1