• 追加された行はこの色です。
  • 削除された行はこの色です。
* git branch [#wed6ddda]
#author("2021-01-07T01:40:36+09:00","default:ryuichi","ryuichi")
* git branch (ブランチの操作)[#wed6ddda]

** ブランチにする新しいレポジトリの作成 [#h3efe796]
 git clone file:///$HOME/tmp/git $HOME/tmp/git.branch1
 cd $HOME/tmp/git.branch1
#lsx

ここでは、$HOME/tmp/gitに元のレポジトリがあるとして、$HOME/tmp/git.branch1にブランチのレポジトリを作る事にする。
ブランチ名はbranch1とする。

** ブランチの作成 [#e4dd8e7a]
 git branch branch1

** ブランチの変更 [#wdd10095]
 git checkout branch1

*** ブランチ作成と共にブランチの変更 [#ve33026a]
 git checkout -b branch1

** ブランチの確認 [#wcc4a6ee]
 git branch

 * branch1
   master

** ローカルブランチの削除 [#ae445d55]
 git branch --delete branch1
 git bramch -d branch1
 
** リモートブランチの削除 [#sf790dcb]
 git push --delete origin branch1
 git push origin :branch1

** マスターでブランチの修正をマージ [#d8ad255e]
*** 1. リポジトリをブランチへ変更 [#a3fc0abd]
 git branch branch1
*** 2. ブランチでコミット [#p0243af9]
何かしらファイルを修正したとして、
 git commit -a -m 'modified'
コミットする。
*** 3. レポジトリをマスターへ戻す [#cff42a38]
 git checkout master
マスターに戻ったので、上のブランチでの修正は消えている。
*** 4. mergeコマンドでブランチの修正をマージ [#k417ce6d]
 git merge branch1
マスターにブランチの修正が反映される。

** rebaseコマンドでブランチの修正をマージ [#fe0ec799]
マスターとブランチでそれぞれ修正コミットを重ねて、以下のような状態にあるとする。

 *       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

*** 参考 [#t2b0696f]
http://progit.org/book/ja/ch3-6.html


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS