[Git] branch

4889 ワード

Branch


Branchは、特定の時点から分岐点を作成し、コードを独立して変更するのに役立つモデルです.字面的な意味の木が枝を引く絵を思い出すと、もっと分かりやすいです.

Branchの作成


ブランチを作成するときは、ブランチで何をするかを明確にする必要があります.そうでなければ、ブランチで何をしたのか、もう一度全部分解して見る必要があるという問題が発生します.
また,分岐点が生じる場合は常にcommitを基準としていると考えられる.
$ git branch // *main
$ git branch hello // 현재 있는 최신 commit으로부터 분기점을 생성한다.
$ git branch //*main  hello

//이동(구버전)
$ git checkout hello [checkout은 복구, 이동 의 액선을 가짐] => 두개로 나눔(switch, restore)
$ git branch

//이동(최신)
$ git switch hello
$ git branch  // main   *hello
ブランチの移動
  • は以前はcheckoutにより分岐を移動していたが,checkoutは回復と移動の2つの動作を有するため,2つの動作を分離した.移動の場合はswitch、リカバリの場合はrestoreを使用できます.
  • Branchについて


    ブランチの独立状態の確認


    hello branchで働く
    $ vi branch.py   //작성 내용: print('hello')
    $ cat branch.py  // print('hello')
    $ python3 branch.py // hello
    $ git add branch.py  
    $ git commit -m "feat: Print 'hello'"
    main brnachで働く
    $ git switch main
    $ cat branch.py // 출력결과가 없다.
    $ python3 branch.py // 출력결과가 없다.

    連結コード(merge)


    コードマージが事前に行われていると考えると、理解しやすくなります.helloブランチで作業している内容をmianブランチにドラッグしたい場合は、mainブランチでコードマージを行うことができます.
    $ git branch // *main 확인
    
    //코드 병합
    $ git merge hello
    
    // hello 브랜치 삭제
    $ git branch -D hello
    
    $ cat branch // print('hello')
    ブランチの削除
  • git branch -D hello
  • ブランチをクリアした場合、ブランチのライフサイクルが満たされているか、エラーが発生します.また,ブランチは定期的にクリアして行うことが望ましい.
  • 分岐合併後、分岐を削除してもコードが残ります.
  • コードマージ競合(マージ完了)

    $ git branch  //*main
    
    // repeat-hello 브랜치 생성 및 코드 작성
    $ git branch repeat-hello
    $ vi repeat-hello
    
    // 생성 확인
    $ git branch //*main  repeat-hello
    
    // main브랜치의 branch.py 파일 수정
    $ vi branch.py
    $ cat brnach.py  
    			//i =3
                if i%3==0;
                    print('hello')
    $ python3 branch.py
    			//hello
                
    $ git status
    $ git add branch.py
    $ git commit -m "feat: Add if Statement"
    
    //repeat-hello 브랜치로 이동
    $ git switch repeat-hello
    $ vi branch.py
    			// for _ range(10):
                		print('hello')
    $ python3 branch.py  // hello 10번 출력
    $ cat brnach.py 
    
    $ git add branch.py
    $ git commit -m "feat: Add for Statement" 
    
    //코드병합
    $ git switch main
    $ git merge repeat-hello //CONFICT 충돌이 났음을 알린다.
    $ vi branch.py //brnach.py를 열어 확인
    出力repeat-helloのコードはhello分岐で記述され、main分岐では出力helloのコードは10回記述されている.(既存のbranch.pyコード:print(「hello」)
    マージが行われた場合、gitは競合するコード部分のみを以下に示します.これをマージ完了と呼びます.
    <<<< HEAD
    i = 3
    if i%3==0:
    ======
    for _ in range(10):
    >>>>>>>> repeat-hello
    	print('hello')
    コード修正後git statusで検証され、両方ともmodified:branchである.pyという言葉でmergeがまだ終わっていないことを確認できます.mergeを完了するには、コード修正後にgit addおよびgit commitの動作を完了する必要がある.
    ただし、マージコードが競合するとcommit内容が自動的に変更されるため、$ git commit -mcommitを行うべきではありません.-mフラグによってcommitが行われると、その内容は上書きされる.
    $ git add branch.py
    $ git commit  
    $ git push origin master