ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Git] git 사용법 튜토리얼4 - 브랜치 원격에서 다루기
    👀 etc... 2020. 6. 23. 13:43

     

     


    git 사용법 튜토리얼 시리즈

     

    1 초기화, 스테이징, 커밋, 되돌리기 

    2 깃 브랜치(branch) 같은 파일로 여러 버전 만들기 

    3 깃허브와 연동하기

    4 브랜치 원격에서 다루기

    5 PR (Pull Request) & Issue

    6 오픈 소스 기여하기


    ● 튜토리얼4

     

    : 서로 다른 폴더에 브랜치 주고받기

     

    테스트를 위한 로컬 작업폴더에 깃 초기화 및 로컬 작업폴더를 깃허브의 원격저장소로 보내는 작업까지 끝낸 상태라고 가정하고 이어서 튜토리얼을 진행합니다.(이전포스팅참고)

     

     

    1. 브랜치 생성

     

    집 컴퓨터 저장소

    git branch 브랜치명
    git checkout 브랜치명
    
    git checkout -b 브랜치명

    먼저, 저번시간에 git branch 명령어를 통해 브랜치를 만들고, git checkout을 통해 해당 브랜치로 전환한다고 하였는데, git checkout -b 명령어는 위 두가지를 한번에 수행해주는 역할을 합니다.

    저는 이전에 브랜치를 모두 지웠기 때문에 git branch 명령어로 확인해보면 마스터브랜치만 남아있는데요. 로컬 작업폴더에서 'branch1'이라는 브랜치를 하나 생성해 줍니다.

     


     

    2. 새로운 브랜치에서 작업 후 add, commit, push

     

    집 컴퓨터 저장소

    생성한 브랜치로 전환 후, 하고 싶은 작업을 수행하고 add, commit을 해줍니다.

     

     

    집 컴퓨터 저장소

    git push 원격저장소 브랜치명

    그리고 push 명령어를 이용해 브랜치1을 원격저장소에 푸쉬해줍니다.

     

     

    원격 저장소로 들어가서 확인하면, 이렇게 브랜치가 생성된 것을 볼 수 있습니다.

     

     

    branch1을 클릭해보면 그리고 로컬에서 branch1에서 작업한 내용이 반영되어있고 이 작업은 master브랜치에서는 보이지 않습니다.

     

     

    git branch -d 브랜치명                        // 로컬 브랜치 삭제
    git push origin --delete 원격저장소의브랜치   // 원격 브랜치 삭제
    
    
    git branch -d branch1
    git push origin --delete origin/branch1

    작업을 마친 후 저는 로컬 저장소 2곳에서의 브랜치와 원격 저장소에서의 브랜치 모두 삭제하였습니다.

     


     

    3. 브랜치 주고 받기

     

    저번시간에 gitTest라는 폴더를 회사에서 작업하고,

    집에서 gitTest_clone이라는 폴더 안에 gitTest폴더를 클론하여 사용한다고 가정하고 작업을 주고 받는 것을 보여드렸는데요.

    마찬가지로 현재 집에 있는 컴퓨터에 gitTest_clone안의 gitTest 폴더에서 위에서 작업한 브랜치를 생성하고 add, commit, push를 마쳤다고 가정하고, 이를 그대로 회사에 있는 컴퓨터의 gitTest폴더에 반영해보겠습니다.

     

     

    회사 컴퓨터 저장소

    git branch 명령어를 통해 확인해보면 현재 회사 컴퓨터에는 로컬 브랜치인 master 브랜치만 있는 것을 확인할 수 있습니다.

     

     

    회사 컴퓨터 저장소

    git branch -a

    이 명령어를 통해서는 원격과 로컬의 브랜치 모두 확인할 수 있습니다. 하지만 아직 깃에서 반영이 되지 않아 branch1은 뜨지 않네요.

     

     

    회사 컴퓨터 저장소

    git fetch

    명령어를 통해 확인해보면 하나의 new 브랜치가 있다고 뜨는 것을 확인할 수 있습니다. fetch후 다시 git branch -a명령어를 입력하면 모든 브랜치가 뜹니다.

     

     

    회사 컴퓨터 저장소

    git checkout -b branch1 origin/branch1

    이 명령어를 통해 회사에 있는 로컬 저장소에 branch1이라는 이름의 브랜치를 새로 생성하고 origin의 branch1의 작업 상태를 그대로 받아오고 checkout까지 진행합니다.

     

     

    회사 컴퓨터 저장소

    파일 상태가 로컬에도 반영이 되는 것을 확인할 수 있습니다.

     


     

    4. 충돌 해결하기

     

    Conflict는 브랜치 간에도 발생하지만, 같은 브랜치에서 같은 파일의 같은 부분을 원격의 두 컴퓨터가 같이 건드린 상황에서도 일어납니다. 많은 깃 사용자들이 이 충돌 문제 때문에 충돌이 일어나면 프로젝트 파일이 날아가거나 사라지거나 문제가 생길까봐 걱정이 많을 텐데요. 그런 점에서 이 충돌을 다루는 방법이 굉장히 중요합니다!!!!!!

     

    예를 들어 A라는 로컬 저장소와 B라는 로컬 저장소가 같은 깃허브 원격 저장소를 이용해 작업하고 있다고 가정합니다. 먼저 A에서 a라는 파일을 작업하여 push하였는데,

    아직 B가 pull하지 않은 상황이면서 동시에 a라는 파일을 수정하고 커밋한 상태가 되면 B는 push를 할 수 없는 상황이 되어버립니다. 그래서 B가 이때 pull을 진행하면 Conflict가 발생하게 됩니다.

     

    그럼 한번 고의로 충돌을 일으켜 보겠습니다.

     

    먼저, 테스트를 위해 왼쪽 저장소는 집 컴퓨터에 있는 저장소라고 하고,

    오른쪽 저장소는 회사 컴퓨터에 있는 저장소라고 가정합니다.

     

    회사 저장소에 conflictTest라는 파일을 하나 생성하고 aaaaaaa이라고 작성 후, add, commit, push 후

    집 저장소에서 pull 하여 줍니다. 그러면 회사와 집 저장소 모두 같은 상태가 되겠죠,

     

     

    회사 컴퓨터 저장소

    그리고 회사 컴퓨터 저장소에 conflictTest파일에 bbbbbbb을 추가한 뒤,

    회사 컴퓨터 저장소

    add, commit, push를 진행해 줍니다.

     

     

     

    집 컴퓨터 저장소

    그리고 집 컴퓨터 저장소에 pull하지 않고 conflicTest파일에는 ccccccc을 추가 한 뒤,

     

    집 컴퓨터 저장소

    그런 뒤 add, commit, push 하려고 하면 이렇게 pull하라는 error가 표시됩니다.

     

     

    집 컴퓨터 저장소

    그래서 pull을 하게되면 이렇게 충돌한 부분이 표시가 되고 pull이 제대로 되지 않는 것을 알 수 있습니다.

     

     

    집 컴퓨터 저장소

    git status로 상황을 확인하면 더 자세히 알 수 있습니다.

     

     

    집 컴퓨터 저장소

    둘 중 하나만 선택하고, 저장

     

     

    집 컴퓨터 저장소

    이 후 add, commit하는데 commit 뒤에 옵션을 붙이지 않고 commit만 입력해줍니다.

     

    집 컴퓨터 저장소

    그러면 이렇게 머지를 위한 메세지가 뜨는데 :wq를 입력하여 저장해주고,

     

     

    push하여 마무리해 줍니다.

     

     

     

     

    이렇게 기본적으로 꼭 필요한 깃의 기능들에 대해 알아보았습니다.

    사실 깃의 기능은 어마어마 하게 많고, 고급기능도 많이 있지만,

    여기까지 사용할 수 있으면 큰 프로젝트가 아닌 이상 깃을 사용하는데 무리가 없을 것입니다.

     

     


     

    깃 튜토리얼 시리즈

    깃의 장점, 사용 이유, 기초 사용법

    2020/06/19 - [SW개발/Framework Library] - [Git] git 사용법 튜토리얼1 - 초기화, 스테이징, 커밋, 되돌리기

    깃 브랜치 사용법

    2020/06/22 - [SW개발/Framework Library] - [Git] git 사용법 튜토리얼2 - 깃 브랜치(branch) 같은 파일로 여러 버전 만들기

     

     

     

    깃 허브 연동, 협업

    2020/06/22 - [SW개발/Framework Library] - [Git] git 사용법 튜토리얼3 - 깃 허브와 연동하기

    깃 브랜치 주고받기, 충돌 다루기

    2020/06/23 - [SW개발/Framework Library] - [Git] git 사용법 튜토리얼4 - 브랜치 원격에서 다루기

     


     

    댓글

Designed by Tistory.