ログイン
編集不可のページディスカッション情報添付ファイル
"alstamber/git"の差分

MMA
1と2のリビジョン間の差分
2012-09-04 22:24:53時点のリビジョン1
サイズ: 2075
編集者: alstamber
コメント:
2012-09-04 22:46:33時点のリビジョン2
サイズ: 4569
編集者: alstamber
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 99: 行 99:

== branch ==
 * 最初はmasterというbranchが作られる。
=== masterとtopic branch ===
 * masterからtopic branchをを作成。
 * topic branchでの変更が終わったら、masterへmerge。
=== head ===
 * 現在使用しているbranchの先頭。
  * デフォではmasterの先頭。
=== stash ===
 * branchに対して何らかの変更を行った状態でbranchを切り替えると、その変更は切替先のbranchに引き継がれる。
 * 同じファイルが切替先のbranchで既に変更されているとconflictしてしまう。
 * 切替元branchにcommitしてから切り替えるか、一時的にstashと呼ばれる領域に変更を退避する。
=== merge ===
 * branchを統合する事を考える。
 * branch Aからbranch Bが分岐し、branch Bに変更を行った後branch Aとbranch Bをmergeすることを考える。
 * branch Aに何の変更も行われていなければ、branch Aの先頭をhead(=branch Bの先頭)にするだけでmerge完了。
  * fast-forward mergeという。
 * branch Aに変更が行われている場合は、両方の変更を取り込んだ新しいcommitを作成する。
  * headは新しいcommitに移動する。
=== rebase ===
 * branch Aからbranch Bが分岐し、branch Bに変更を行った状態を考える。
 * この状態でrebaseするとbranch Aの後ろにbranch Bの変更が付け足される。
 * branch Aはそのままなので、branch Aの先頭をheadに移動するにはmergeを行えば良い。
=== A successful git branching model ===
 * in Japanese : http://keijinsonyaban.blogspot.jp/2010/10/successful-git-branching-model.html
 * in English : http://nvie.com/posts/a-successful-git-branching-model/
=== create branch ===
{{{
git branch <branchname>
}}}
=== list branch ===
{{{
git branch
}}}
=== checkout branch ===
 * branchの切替
{{{
git checkout <branch>
}}}
=== merge branch ===
 * <commit>という名前のbranchがheadの指しているbranchにmergeされる。
{{{
git merge <commit>
}}}
=== delete branch ===
{{{
git branch -d <branchname>
}}}
=== correct conflict ===
 * conflictによってmergeに失敗した時はどうするか。
 * conflict箇所を修正してからcommitすればよい。
=== rebase branch ===
 * <branch>にたいしてrebase。
{{{
git rebase <branch>
}}}
 * conflictによって失敗した場合は該当箇所を修正し、
{{{
git rebase --continue
}}}

なにこれ

gitを運用する上での知識の整理。

initial settings

git config --global user.name "<username>"
git config --global user.email "<mail address>"

create

create new repository

git init

create new public repository

  • 慣例としてディレクトリ名に.gitをつける。
  • --bareをつけると、bare repositoryになる。bare repositoryは管理情報のみを持つ。
    • commitなどができない。

git --bare init

clone

clone local repository

  • 既存のlocal repositoryを複製する。

git clone /path/to/repository

clone remote repository

  • 既存のremote repositoryを複製する。

git clone username@host:/path/to/repository

check

check status

  • working directoryとindexの状態を確認する。

git status

check repository log

  • repositoryの変更履歴を確認する。

git log

add/remove

add files

  • indexにaddする。

git add <filename>
  • すべてをaddする。

git add *

remove files

  • indexからremoveする。

git rm <filename>

commit

commit

git commit -m <message>

push/pull

add remote repository

  • push/pullするためにremote repositoryを予め登録しておく。

git remote add <name> <url>
  • 通例次のように使う。
    • push/pullでrepository名を省略するとoriginという名前につなぎに行こうとするので。

git remote add origin <remote repository url>

push

  • <repository>に<branch>をpushする。

  • cloneして生成したrepositoryではgit pushだけでgit push origin masterと同じ事になる。

git push <repository> <branch>...

pull

  • <repository>をとってきて<branch>にmergeする。

git pull <repository> <branch>

branch

  • 最初はmasterというbranchが作られる。

masterとtopic branch

  • masterからtopic branchをを作成。
  • topic branchでの変更が終わったら、masterへmerge。

  • 現在使用しているbranchの先頭。
    • デフォではmasterの先頭。

stash

  • branchに対して何らかの変更を行った状態でbranchを切り替えると、その変更は切替先のbranchに引き継がれる。
  • 同じファイルが切替先のbranchで既に変更されているとconflictしてしまう。
  • 切替元branchにcommitしてから切り替えるか、一時的にstashと呼ばれる領域に変更を退避する。

merge

  • branchを統合する事を考える。
  • branch Aからbranch Bが分岐し、branch Bに変更を行った後branch Aとbranch Bをmergeすることを考える。
  • branch Aに何の変更も行われていなければ、branch Aの先頭をhead(=branch Bの先頭)にするだけでmerge完了。
    • fast-forward mergeという。
  • branch Aに変更が行われている場合は、両方の変更を取り込んだ新しいcommitを作成する。
    • headは新しいcommitに移動する。

rebase

  • branch Aからbranch Bが分岐し、branch Bに変更を行った状態を考える。
  • この状態でrebaseするとbranch Aの後ろにbranch Bの変更が付け足される。
  • branch Aはそのままなので、branch Aの先頭をheadに移動するにはmergeを行えば良い。

A successful git branching model

create branch

git branch <branchname>

list branch

git branch

checkout branch

  • branchの切替

git checkout <branch>

merge branch

  • <commit>という名前のbranchがheadの指しているbranchにmergeされる。

git merge <commit>

delete branch

git branch -d <branchname>

correct conflict

  • conflictによってmergeに失敗した時はどうするか。
  • conflict箇所を修正してからcommitすればよい。

rebase branch

  • <branch>にたいしてrebase。

git rebase <branch>
  • conflictによって失敗した場合は該当箇所を修正し、

git rebase --continue

alstamber/git (最終更新日時 2012-09-07 22:43:21 更新者 alstamber)