[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
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
#in some branch
$ git rebase master
git rebase -i ${수정할 커밋의 직전 커밋}
# 커밋 해시를 이용한 방법
git rebase -i 9d9cde8
# HEAD를 이용한 방법
git rebase -i HEAD~3
git rebase -i ${압축 하고 싶은 commit의 위치}
# HEAD를 이용한 방법
git rebase -i HEAD~3
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週水曜日
Reference
この問題について([GIT] Rebase), 我々は、より多くの情報をここで見つけました
https://velog.io/@jay95ko/GIT-Rebase
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
🚨rebaseは必ずしもpush commitではなく、私が働いているcommitだけを処理するのは精神健康にいいです.🚨
初めてrebaseについての説明を聞いたことから、週末を含めて5日間かかります.
違うように見えますが、Gitについては絶対に知ってはいけないと思います.私のミスはチームメンバーにダメージを与える可能性があるので、大まかに理解して使えば絶対に使えません.
正直に言うと、何度も理解できずに諦めたくなりましたが、次第に理解していく過程がとても楽しく、結果的にrebaseに対して自分の基準があり、どのように使うかを考えました.
遅くても、はっきりさせなければなりません.🔥
第3週水曜日
Reference
この問題について([GIT] Rebase), 我々は、より多くの情報をここで見つけました https://velog.io/@jay95ko/GIT-Rebaseテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol