ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [GitHub] 원격 저장소에 branch를 생성한 뒤, 로컬에서 작업할 때, 생길 수 있는 문제
    협업 Tool/Github 2024. 4. 12. 13:44

    상황 설명

    강의를 보면서 깃 플로우 연습을 하고 있었다. 아래 사진 처럼 두 개의 창을 띄워 놓고 하고 있었다. 

     

    왼쪽 창은 강의를 보면서 따라 하고 오른쪽 창은 혼자서 먼저 한 다음 강의를 틀고 맞는 지 뭘 틀렸는 지 확인 하며 하고 있다.

    뭘 하고 싶었는가?

    원격 저장소(깃허브)에서 브랜치를 먼저 생성한 뒤 로컬(vscode)에서 브랜치를 가져와 작업하고 싶었다. 

    (강의를 보면서 따라한 왼쪽 창)

     

    1) 로컬에서의 branch 목록을 보여주는 명령어로 현재 main 만 있음을 확인할 수 있다.

    2) 원격저장소(GitHub)에서의 branch 목록을 보여주는 명령어로 현재 origin.main 만 있음을 확인할 수 있다.

    최소한 3번 과정 들어가기 전에 Github에서 branch를 생성해야됨. 

    3) 깃 동기화 작업이고 원격저장소(GitHub)에서 생성한 branch가 로컬과 동기화 되었다.

    4) 원격저장소(GitHub)에서의 branch 목록을 보여주는 명령어로 추가 되있음을 확인할 수 있다.

    5) 로컬에서의 branch 목록을 보여주는 명령어로 추가하고자 하는 브랜치가 추가되지 않음을 알 수 있다.

    6) 해당 명령어를 통해  feature/1 을 추가하였다.

    7) 로컬에서의 branch 목록을 보여주는 명령어로 추가하고자한 브랜치가(feature/1) 잘 추가되있음을 확인할 수 있다.

    더보기

     TIP)
    git checkout -t : 로컬에 존재하지 않는 원격 브랜치를 로컬에 생성하고 해당 원격 브랜치를 추적하는 브랜치로 체크아웃합니다. 
    ex) origin/feature/1 이라는 원격 브랜치가 있고 이를 로컬에서 추적하고 싶을 때, 아래와 같이 사용할 수 있다. 

    git checkout -t origin/feature/1

    그래서 뭐가 문제냐? 

    --> 내가 오른쪽에서 혼자 따라하다가 -t 는 처음 배운 개념이라 나도 모르게 ... 자세한 설명은 아래 사진을 보면서 ....

    1) 해당 명령어를 사용, 원격저장소에 있는 브랜치 확인했고

    2) 동기화를 진행했다.

    3) 동기화가 잘된 것을 확인할 수 있었다. 

    4) 로컬에서 브랜치도 확인했고

    5) 여기서 부터가  문제의 시발점이다.

    git checkout -t origin/feature/2         // 이렇게 했어야 됐는 데
    git checkout origin/feature/2         // -t를 생략하고 진행해버림 엔터치고 뭔가 쫘르르르륵 나오길래 내 마음도 오열

    6) 알 수 없는 말이다... ChatGPT 형님께 여쭤보자.

    + 구글링에 의하면 detached HEAD를 직역하자면 "헤드에 떨어져 있는" 이다. (브렌치로부터.) 즉, branch를 통해서가 아니라 "직접 다이렉트로 commit을 참조"하고 있는 상태이다. 
    참고 블로그 : https://devcamus.tistory.com/6

    7) 이 때, 앗 그래도 Note : swicthing to origin/feature/2 라 했으니깐 됐나? 하고 해당 명령어를 쳤지만

    8) ??? 처음 보는 (HEAD detached at origin/feature/2) 가 보였다....

    9) 에라 모르겠다. 그냥 다시 원래 시도하려고 한 아래 명령어를 쳤다.

    git checkout -t origin/feature/2         // 이렇게 했어야 됐는 데

    10) 괜히 원격저장소에 잘 있나 확인도 해주고.......

    11) 체크아웃하고 한번 더 해주고

    12) 체크아웃 한 뒤 재시도 

    13) 오타입니다.

    14) 로컬 브랜치 확인해 봤지만 없네....

    15) ChatGPT 형님 말 들어보자 하고 시도

    16) ㅎ.ㅎ 성공입니다. 

     

    요약 

    1. 원격 저장소에 브랜치를 생성한 뒤 

    2. 로컬에서 잘못 체크아웃했다면

    3. git switch -c <브랜치명>      

    4. 을 사용해서 로컬에서 잘 들어가주자.

     

Designed by Tistory.