[Git][branch]習ったことを整理しましょう

3097 ワード

Exercise


V.S Non-Fast Forwardingの高速転送

$ git checkout -b iss53 
上のchekoutコマンドでは、-bオプションは、次の2つのコマンドを一度に入力して実行するのと同じです.
git branch iss53
git checkout iss3
$ vim index.html 
$ git commit -am 'added a new footer (issue 53)'

突然急用があったので、私はブレンチをマスターブレンチから出します.そのためには、まずは!!git checkout masterをするには
git checkout-bhotfixコマンドを実行して新しいbrenchを作成します.
$ git checkout master 
$ git checkout -b hotfix
そしてVimエディタindexを利用htmlファイルを生成します.
$ vim index.html 
$ git commit -am 'c4 fixed the broken email address'

ここでhotfix brunchとiss 53 brunchはmaster共通の親がコミットしたbrunchになることに注意してください.
メインレンチでマージしたいなら、まず
$ git ckeckout master 
$ git merge hotfix 
Updating 6efd70b..f499d0c
Fast-forward
 index.html | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 index.html
mergeでは4行目に「Fast-forward」が出てきます韓国語では早く風邪を引くという意味です

現在Master Brotchはhotfixブランチのcommitを指しています
しかも別のcommitじゃない!

私たちは前に合併したときに個別のコミットを生成しました!


Fast-forwardではマージコミットは発生しません.私はただあなたの主人に約束が誰なのかを単純に教えただけです.

hotfixとmaster brunchは共存する必要がないので、hotfixを削除します。(これはブレンジをよりきれいに管理する方法です)

$ git branch -d hotfix
Deleted branch hotfix (was f499d0c).
では、今から元のiss 53レンチの作業を再開しますか?
$ git checkout iss53 
$ vim index.html 
$ git commit -a -m 'finished the new footer [issue 53]'
[iss53 ad82d7a] finished the new footer [issue 53]
1 file changed, 1 insertion(+)
$ git checkout master 
$ git merge iss53
CONFLICT (add/add): Merge conflict in index.html
Auto-merging index.html
Merge made by the 'recursive' strategy.
 index.html | 2 ++
 1 file changed, 2 insertions(+)
「再帰」戦略の言葉を見ましたか.以前はFast-forward

issu 53は、masterからdoricに移行した後、masterがc 2からc 4に移行する.この場合Fast-forwardはできません
その襟は内部で動きます
1)Gitはマスターとiss 53の共通の祖先を見つける.3 waymergeという内部手法を用いて,c 4とc 5を加算し,この2つを加算した情報を教えてくれる.つまりC 6は下のショットのようになります.

上のC 6はC 5とC 4に関するすべての情報を持っている両親です.

FAST Forward VSRecorsive間の差異


1)Fast-Forward生成コミット(X)2;Recursive生成マージコミット(O)


ソース:https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%B8%8C%EB%9E%9C%EC%B9%98%EC%99%80-Merge-%EC%9D%98-%EA%B8%B0%EC%B4%88