[git] rebase
rebase
mergeレコードを保持しないfast-forward merge方式が好きな場合は、fast-forward mergeができない場合(3ウェイmerge case)、no-fast-forward mergeを行ってmergeレコードを保持する必要はありません.
rebaseを使用してfast-forward mergeを行うことができます.
上の画像は現在fast-forward mergeができない3ウェイmerge caseです.
branch1
をf
に変換すればfast−forwardマージを行うことができる.反基地注意点
もし私が
branch1
で一人で働いていたら、いつでも自由にrebaseを行うことができますが、他の開発者と一緒にbranch1
で働いている間にrebaseを行うと危険です.rebaseを実行すると、コミットされたポインタが変更され、コミットされたポインタ情報が変更されると、既存のコミットを保持するのではなく、表面的に名前と同じ新しいコミットが生成されます.
この場合、私がrebaseを行うと、コミット情報が他の開発者と異なるために競合する可能性があるので、ブランチを独自に管理する際にrebaseを使用する必要があります.
実験結果はrebaseがこのブランチから派生したコミットである前にrebaseを行うことは不可能であることを示した.
上図の例では、
branch1
はcコミット前にrebaseを行うことができず、以降のコミットでのみrebaseを行うことができる.rebaseコマンド
# in rebase를 진행할 브랜치
git rebase 브랜치or해시코드
その後、master
からbranch1
までfast−forward mergeを行うことができる.例
# in master
git merge branch1 # fast-forward merge 진행
rebase --onto
場合によっては、ブランチから派生したブランチをプライマリブランチに再構築する必要があります.
例えば、上図に示すように、
server
分岐から派生したclient
分岐がある.まだテストされていない
sever
本をclient
本に統合するには、master
本のrebase
本を選択します.git rebase --onto master server client
これは、サーバブランチから派生したクライアントブランチをプライマリブランチにリダイレクトするコマンドです.このコマンドを実行すると、
--onto
ブランチで次のような変更が発生していることがわかります.Reference
この問題について([git] rebase), 我々は、より多くの情報をここで見つけました https://velog.io/@younoah/git-rebaseテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol