MyAbility)Git内の平行宇宙-再基地、合併


1.Git内に平行宇宙を作成する


1.1 Gitブランチの作成


1.2ブランチ間の移動


2.Gitの更新、マージ


2.1 mergeの操作手順


2.2 Rebaseの操作手順


2.3 mergeとrebaseの特徴


1.Git内に平行宇宙を作成する


Gitを使わない開発者はほとんどいないと言えます.Gitは会社で協力するときにも役に立つからです.
Gitはブランチで共有するコードを持っており,自分でテストや修正を行ってもソースコードに影響しない.
つまり、私のLocal内に同じコードを使った別の平行宇宙を作成することができます.

1.1 Gitブランチの作成


Gitでブランチを作成する方法は簡単です.
まずGitに独自のRepositoryを作成し、ブランチを表示できます.
$ git branch 

上記の入力により、terminalウィンドウで自分が使用しているローカルブランチを表示できます.
では、なぜ上記の分岐を使うのでしょうか.
EX)今回は一つのプロジェクトを協力しました.チームメンバーは3名で、それぞれ2名のFrontEndと1名のBackEndで仕事を始めた.メンバー間で使用するリポジトリでコードを取得して作業を開始しようとしたが、オリジナルが破損する恐れがある.
!!! このとき使用できる機能はbranchです.

brunchを生成する方法は以下の通りです.
$ git checkout -b '생성할 branch명'
上記のように、別のbrunchを作成してコミットすると、新しいファイルを変更するように既存のファイルを変更することができ、触れることはありません.
ファイルを作成、変更した後、
$ git add '추가,수정한 파일명' 
OR 
$ git add . //변경된 파일 전체를 추가
終わってから提出します.
$ git commit -m 'commit시 메세지'
完了したら、pushを自分で使うbrunch名として入力します.
$ git push origin 'branch명'
これにより、正常に生成されたbrunchでファイルが生成され、pushが完了したことがわかります.

1.2ブランチからブランチへの移動


ブランチを作成すると、作成したブランチ間を移動することもできます.
$ git checkout '이동할 branch이름'
上記のコマンドを入力すると、ブランチ間を自由に移動してファイルを変更およびコミットできます.

上のようにMaster BranchではBrunchAjsが見つかりません

brunchAに移動するとbrunchAjsが見つかったことを確認できます.

2.Gitの更新、マージ


mergeとrebaseは、コミットファイルをマージするコマンドです.
異なるbrunchでファイルを変更し、最終的に異なるブランチで作業した結果を使用する必要がある場合は、brunchをマージする必要があります.
このときはmergeとrebaseを使います.
両者ともbranchを統合する共通点があるが、最終的な結果は異なる.

2.1 mergeの操作手順


ブランチを説明するときの使い方を例に挙げて説明しましょう.

この場合.
$ git checkout main //brunch를 main으로 바꿔준다.
$ git merge pack //main을 기준으로 pack을 merge 해준다.
では、次のような結果が得られます.

上図に示すように、mergeを使用して異なるbrunchでコミットし、1つにマージすることができます.
この場合、基準となるbranchに移動し、マージするブランチを貼り付けるとよい.
$ git merge '병합할 branch'
TIP)mergeの2つの操作方式
1.fast-foward:早く風邪を引くことを示します.例えば、A branchは急いでB branchを作成し、B branchは何度もcommitがあります.
この場合、A分岐機構がB分岐機構を合併すると仮定すると、A分岐機構がB分岐機構を合併する以外に承諾がないので、A分岐機構はB分岐機構のように「速やかに閉じる」だけでよい.
したがって、この場合、追加のcommitlogを必要とせず、Bブランチで作成された最新のcommitlogをfast-fowardと呼ぶことができる.
2.再帰ポリシー:再帰ポリシーを例に、AブランチにおいてBブランチが生成される.その後Aブランチは複数回commit,Bブランチも複数回commitがある場合はAブランチからBブランチをマージする.
これによりfast-fowardを行うことができずgitはAブランチとBブランチの祖先commitを検索し,内部で3 way mergeという方法でmergeを行う.
  • 3路合併とは何ですか?ベースを参照して他の2つのブランチをマージ
    各ブランチには、異なる変更が反映されます.baseを参照してください.ブランチとbaseが変更されていない場合は、変更しないように反映されます.しかし、baseもbranchも変化し、異なる部分が衝突する.
    (ビデオ-
  • 参照)

    2.2 Rebaseの操作手順


    rebaseはその名の通りbrunchのbase部分を再設定します.
    このときbaseというブランチが作成され、開始点と考えられます.

    この場合.
    $ git checkout main //brunch를 main으로 바꿔준다.
    $ git rebase pack //가장 최근 commit된 main을 기준으로 pack을 rebase 해준다.

    それは上のように先に起動します.△視覚的に見るのではなく、システム的に見るのです.
    1.packがコミットした内容はTEMPとして保存されます.
    mainが最近提出した場所でpackにサインします.
    その後、最終的に以下の結果が出力される.

    上図に示すように、packというブランチのbaseが変更されたことが最終的に確認されました.

    注意点


    2つのブランチが同じファイルの同じ場所を同時に変更してマージすると、競合が発生します.
    また,衝突が発生した場合の解決策をConflict Resolutionと呼ぶ.

    第1列:HEADは現在移動しているbrunchを表す
    2列目:分岐ファイルで競合している部分を移動
    3列目:マージするブランチファイルで競合が発生した部分
    列4:マージするブランチの名前
    上記の図に示すように、競合が発生した場合、git addで変更したファイルにコードを統合し、2つのケースがあります.
    結合する場合
    1. git add .
    2.git commit-m「メッセージ」
    3.git push origin「現在のブランチ名」
    4.git merge「マージするブランチ名」
    rebaseの場合
    1.git rebase-comtinue(衝突が解消されるまでaddと--continueを繰り返します)
    2.git commit-「modify」を使用して、最上位レベルのメッセージ以外のすべてのコンテンツを削除します.
    3.git push origin“branch name”.
    TIP)以下のコマンドにより,自分のGit logの現状をグラフィカルに直感的に見ることができる.
    $ git log --decorate --all --oneline --graph

    に感銘を与える

  • 顕業でよく用いられるGitを深く研究し,それを人と協力するために用いた.
  • はまだ未熟ですが、もう少し努力してGitを深く研究しなければなりません.
  • 初級者は、できるだけrebaseを書かない理由はcommit記録を維持できないことを知っている.だから今まで初心者だったので、mergeを使います.
  • リファレンス

  • https://youtu.be/J0W-WA0aYJI
  • https://antilog.tistory.com/17
  • https://backlog.com/git-tutorial/kr/stepup/stepup2_7.html