본문 바로가기

STUDY/기타 IT

[Git] Remote repository / Checkout & branch / Merge & Conflict / tag

 

이 글은 24.01.30에 본인 벨로그에 작성했던 글을 옮겨 온 것이다.

 

Remote Repository(이하 repo) 명령어

  • Local repo에 Remote repo 추가
    가장 중요한 repo를 등록할 때엔 origin이라는 이름을 써 주자.


  • Remote repo 주소 수정


  • Remote repo 이름 수정


  • Remote repo 삭제


  • Remote repo 정보 확인
    주의사항. 정보 확인 시 토큰 정보도 확인할 수 있다
    => 누구나 접속할 수 있는 PC의 remote repo에 토큰을 입력해 두면 누구나 내 토큰 정보를 확인할 수 있게 되는 것! 보안에 취약할 수 있으니 주의하자.


  • Remote repo 상세 확인


  • Pull


  • Push



실습

Local repo -> Remote repo

아래와 같은 상황을 가정해서 직접 해보자!
Local repo에서 작업을 하다가, 해당 작업 내용을 Remote repo에 올리고 싶은 경우
(Remote repo를 바로 local로 clone 해 오는 것과는 다르다!)

1. Local repo 생성(local_project)
=> git init


2. Local repo의 작업물을 올릴 "빈 Remote repo" 생성
=> Local repo가 먼저 만들어진 상태에서 Remote repo에 연동하려면, Remote repo에 아무것도 없이 비어 있어야 한다(README, gitignore 등 아무것도 없어야 함)


3. Local repo에 Remote repo 추가 및 확인
=> git remote add repo_name repo_url
=> git remote -v


4. Remote repo 이름 변경 후 확인
=> git remote rename old_name new_name
=> git remote -v


5. Local repo의 작업을 Remote repo에 Push하기
=> README.md 파일 생성 후 커밋


=> 커밋 내용을 Remote repo로 push(git push)

 

 

Remote repo -> Local repo

아래와 같은 상황을 가정해, 직접 해 보자!
Remote repo의 작업물을 Local repo로 가져오기

1. Remote repo 생성


2. Remote repo를 Local repo로 가져오기(연동하기)
=> git clone remote_repo_url


README.md 파일이 들어갔다. 잘 연동되었음을 확인할 수 있다.
보면 알겠지만, Remote repo를 Local로 연동해 온 후에 작업하는게(local의 버전을 push 한다던가...) 더 편하다.



Checkout and Branch

Checkout

  • 특정 버전(시점)으로 HEAD를 이동시키는 것.
    => Commit id의 버전 상태로 본인의 작업폴더가 바뀜
    => 해당 버전의 코드를 볼 수도 있고, 해당 버전에서 작업을 시작할 수도 있음

    checkout을 하려면 커밋 id를 알아야 한다.
    => log를 확인하면 알 수 있다.
    => commit 앞의 문자열이 버전을 구분하는 커밋 id이다. 앞의 7자리만 사용해도 OK(--oneline)
  • Checkout을 하면 어떻게 되는가??

 

Git Branch

  • 개발을 하다 보면, 한 코드를 여러개로 복사해서 사용해야 하는 경우가 잦다. 이런 경우엔 개발 후 원래 코드와 병합을 해야 하는데... 이럴 때 쓰일 수 있는 것이 Git Branch이다.
  • Git Branch
  • local branch 목록 확인/생성/삭제
    주의사항 : branch는 HEAD의 위치에 생성된다.


  • remote branch 목록 확인/삭제


  • 모든 branch 목록 확인
  • local branch를 remote repo에 배포
  • branch 간 이동(checkout)



Merge and Conflict

Git Merge

  • 현재 위치한(HEAD) 버전에 다른 버전을 병합하는 것
    => Branch를 병합하거나 Push, Pull 할 때도 발생하는 작업이다.

 

Conflict

  • 두 Branch에서 같은 버전의 부분을 수정하는 경우, Auto Merge가 불가능하다.
    이런 경우에 발생하는 문제상황을 말한다.
  • Conflict가 발생한 파일은 아래와 같이 표기된다.
  • Conflict 해결 과정
  1. 파일 수정
  2. git add
  3. git commit
  • Push, Pull 중에 Conflict가 발생하면?
  1. Puch 중 Conflict
    => Push 실패
    => Pull을 통해 Conflict를 확인할 수 있음

  2. Pull 중 Conflict
    => Fetch만 되고 Merge는 실패한 상태의 Conflict가 발생
    => Conflict를 해결하면 자동으로 Merge 됨.


    즉, Push 전에 항상 Pull을 하는 습관을 들이도록 하자!



Git Tag

  • 특정 버전에 tag를 달아놓을 필요가 있을 때에 사용 (ex. version release)
    => 해당 tag로 checkout 할 수 있다.
  • tag 생성하기
    => HEAD의 위치에 생성됨.

  • tag 목록 보기
  • 특정 버전에 tag 달기
  • remote repo에 tag 배포하기
  • tag 상세 보기
  • local tag 삭제하기
  • remote tag 삭제하기