- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Git/git branch へ行く。
git branch
ブランチにする新しいレポジトリの作成
git clone file:///$HOME/tmp/git $HOME/tmp/git.branch1 cd $HOME/tmp/git.branch1
ここでは、$HOME/tmp/gitに元のレポジトリがあるとして、$HOME/tmp/git.branch1にブランチのレポジトリを作る事にする。 ブランチ名はbranch1とする。
ブランチの作成
git branch branch1
ブランチの変更
git checkout branch1
ブランチ作成と共にブランチの変更
git checkout -b branch1
ブランチの確認
git branch
* branch1 master
ブランチの削除
git branch --delete branch1
マスターでブランチの修正をマージ
1. リポジトリをブランチへ変更
git branch branch1
2. ブランチでコミット
何かしらファイルを修正したとして、
git commit -a -m 'modified'
コミットする。
3. レポジトリをマスターへ戻す
git checkout master
マスターに戻ったので、上のブランチでの修正は消えている。
4. mergeコマンドでブランチの修正をマージ
git merge branch1
マスターにブランチの修正が反映される。
rebaseコマンドでブランチの修正をマージ
マスターとブランチでそれぞれ修正コミットを重ねて、以下のような状態にあるとする。
* 1beeeb2 NA 2012-02-20 update 1.txt #2 (HEAD, master) * e624f10 NA 2012-02-20 update 1.txt #1 | * 89f9845 NA 2012-02-20 update 1.txt #b (branch1) | * 5d03b99 NA 2012-02-20 update 1.txt #a |/ * e57f326 NA 2012-02-20 update 1.txt * fd98d1b NA 2012-02-20 add 1.txt
ここで、ブランチに移り、リベースを実行する。
git checkout branch1 git rebase master
すると、 以下のような状態になる。
* bd0fd6a NA 2012-02-20 update 1.txt #b (HEAD, branch1) * 9814001 NA 2012-02-20 update 1.txt #a * 1beeeb2 NA 2012-02-20 update 1.txt #2 (master) * e624f10 NA 2012-02-20 update 1.txt #1 * e57f326 NA 2012-02-20 update 1.txt * fd98d1b NA 2012-02-20 add 1.txt
マスターとブランチの分岐前の時点にいったん戻り、各修正コミットについての差分を作られる。そして、まず、マスターでの修正コミット(#1や#2)がパッチ適用された上で、ブランチでの修正コミット(#aや#b)がパッチ適用される。これでブランチはマスターの修正を取り込んだ事になる。
この時点でマスターはブランチの修正を反映してないので、マスターにブランチの修正をマージするには、以下のようにマージコマンドを実行する。
git checkout master git merge branch1