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
- github で人のコードをいじる「前」にforkする必要はない - Bulknews::Subtech - subtech
- GithubでFork
- git remote add myfork git@github.com:username/remedie.git
- git push myfork master
- pull requestを送る
だめだ,知らんことが多すぎる.勉強が必要だ.