[GIT] Rebase


1.いわゆるRebase


1) rebase vs merge



M 1にブランチを作成し、M 2、B 1、M 3、B 2の順にコミットします.
マージすると、commitヒストリが紫色線のようにM 1->M 2->B 1->M 3->B 2の順に現れるため、commitヒストリは混乱します.
ただし、ブランチでbaseシフト(baselan branchが突き出たcommit)rebaseの場合、baseの位置はmaster branchの最も近いcommitになります.
データベースを再構築した後、プライマリ・ブランチにブランチをマージすると、commit履歴がきれいに整理されていることがわかります(緑の線)
したがって,これは再基盤か合併かの論理ではない.
1.連結するかどうか
2.更新後にマージするかどうか
このように二つを比較する

2.なぜRebaseを選んだのですか?


1) Git History


GitHubが提出した履歴はプロジェクトの成長とプロセスを反映している.そのため、プロジェクトの規模はますます大きくなり、参加するチームが多ければ多いほど、履歴の提出を管理する必要があります.
したがって、rebaseを使用してcommitの順序を明確にする必要があります.

2) Edit Commit


作業中に分からないかもしれませんが、commit messageにエラーがあり、テストのために作成されたcommitが追加された可能性があります.rebaseを使用してcommitを変更します.

3.Repaseの方法


1)baseの位置を再設定する

#in some branch
$ git rebase master

2)commitメッセージの再起動の変更

git rebase -i ${수정할 커밋의 직전 커밋}

# 커밋 해시를 이용한 방법
git rebase -i 9d9cde8

# HEAD를 이용한 방법
git rebase -i HEAD~3
これでコマンドを入力すると、Vimエディタが表示されます.

上で変更するcommitをpickではなくrewordに変更し、保存を終了します.
Vim Editorに遭遇する可能性があります.commit messageを変更できます.

上のウィンドウでcommit messageを変更し、保存を終了すると、commit messageが変更されていることがわかります.

3)commitメッセージを圧縮するためのREDO

git rebase -i ${압축 하고 싶은 commit의 위치}

# HEAD를 이용한 방법
git rebase -i HEAD~3
これにより、上記のcommitメッセージを変更するように、各commitにオプションを提供できます.
この場合、マージするcommit messageの押し出しオプション(押し出したcommitの前のcommitにマージ)を指定できます.
保存が完了すればいいので、この時点でマージしたcommit messageも変更できます!

4. Rebase -i option

  • pick,p=>は
  • を修正せずに使用する.
  • 書き換え、r=>commitメッセージ
  • の変更
  • edit,=>commitメッセージだけでなく、コンテンツ
  • も変更する.
  • Squash,s=>以前のcommitとマージ、commitメッセージマージ
  • fixup,f=>は以前のcommitとマージされるが、以前のcommitメッセージ
  • のみが残る.

    5.Revase注意点


    rebaseには多くの利点がありますが、rebaseはcommit修正ではなく削除後に生成される観点で見るべきです.
    削除後に生成されたハッシュ値が変更されます.hash値が変更された場合、どのような問題が発生するかを考慮できます.
    私一人で仕事をしているときはあまり問題はありません.
    2.しかし、チームメイトたちはマスターにPUSHの基本フレームワークとなるコードを受け取り、それぞれの仕事をしている.
    3.push commitをベースに再設定すると、これらのcommitのhash値が変更されます.
    4.同僚たちは、提出したhash値を手動で変更する必要があることがあります.
    5.同僚がコミットしたhash値を変更しない場合、消失したコミットがベースになる可能性があります.
    6.もしそうなら、提出履歴は非常に悪くなります.

    6. conclusion


    🚨rebaseは必ずしもpush commitではなく、私が働いているcommitだけを処理するのは精神健康にいいです.🚨
    初めてrebaseについての説明を聞いたことから、週末を含めて5日間かかります.
    違うように見えますが、Gitについては絶対に知ってはいけないと思います.私のミスはチームメンバーにダメージを与える可能性があるので、大まかに理解して使えば絶対に使えません.
    正直に言うと、何度も理解できずに諦めたくなりましたが、次第に理解していく過程がとても楽しく、結果的にrebaseに対して自分の基準があり、どのように使うかを考えました.
    遅くても、はっきりさせなければなりません.🔥
    第3週水曜日