01. Git

Git이란?

컴퓨터 내의 파일들의 변경 사항을 추적하는 SW

컴퓨터 내의 파일들을 추적하는 만큼 Internet 연결 유무와 상관 없이 사용할 수 있음

Internet이 연결이 안되어 있어도 파일 변경 사항을 추적할 수 있고, commit을 남기는 등의 행위가 가능

Git Hub에 올리는 행위가 Commit이 아님

  • Git Hub란?

    Git Hub란 그러한 Git 파일을 온라인 차원에서 이용할 수 있게 해주는 Service

  • Commit이란?

    파일의 변경 사항에 대해서 기록해두는 것

    현재 상태를 체크 포인트처럼 마킹해둔다고 생각하면 됨

    Online이 아니어도 로컬(자신의 컴퓨터 등)에서 파일의 변경 사항에 대해 기록을 남길 수 있음

    => 이걸 push라는 명령어를 통해 Git Hub 같은 곳에 기록되었던 commit을 올리는 것임

  • 명령어

    • Clone

      Repository의 내용을 그대로 가지고 오는 명령어

      단순히 꼭 Git Hub에 있는 레포지토리만 복사할 수 있는 것은 아니고, 로컬에 있는 것도 경로를 지정해준다면 할 수는 있음!

      다만 그냥 Ctrl + c, Ctrl + v 하면 되므로 굳이..?이긴 함

      앞으로의 명령어도 대부분 원격 저장소를 기준으로 설명할 예정

      git clone 복사할 레포지토리 주소
      
    • Pull

      Repository의 최신 commit들을 내려받는 것

      git pull 원격저장소 브랜치
      

      보통 git pull origin main(or master)를 많이 하겠지만, 이는 origin으로 등록해놓은 원격 저장소의 main branch의 최신 commit들을 내려받겠다는 의미임

      경우에 따라서는 원격 저장소의 이름이 다를 수도 있고, branch를 나눠서 개발하다보면 내려받아야 할 branch의 이름이 다를 수도 있음

    • Push

      Repository에 커밋들을 업로드 하는 것

      git push 원격저장소 브랜치
      

      pull과 마찬가지로 보통 git pull origin main(master)를 많이 하겠지만, 이는 origin으로 등록해놓은 원격 저장소의 main branch로 올리겠다는 것임

      경우에 따라서는 원격 저장소의 이름이 다를 수도, 올려야 할 branch가 main이 아니라 다른 곳일 수도 있음

    • Log

      현재 자신이 있는 Branch의 log들을 볼 수 있음

      git log
      

      간혹 Branch의 Commit 기록들을 보고 싶을 때 사용할 수 있음

    • Status

      파일의 상태를 보여줌

      무슨 파일이 수정됐는지 등에 대한 정보를 알 수 있음

    • Remote

      원격 저장소와 관련된 명령어

      옵션에 따라서 실행되는 명령어가 달라짐

      • Add

        원격 저장소를 등록하는 것

          git remote add 저장할이름 주소
        

        git remote add origin http:~~로 하면 해당 주소의 Repository를 origin이라는 이름으로 등록해둠

        꼭 origin으로 안해도 상관없음

      • Remove

        원격 저장소를 제거하는 것

          git remote remove 원격저장소이름
        
      • Update

        원격 저장소 내의 모든 브랜치의 최신 이력 정보를 확인하는 것

          git remote update
        
    • Branch

      • Branch란?

        한국어로 나뭇가지라는 의미 말 그대로, 가지처럼 새로운 갈래(흐름)을 만드는 것

        예를 들어 각자 개발을 해야 하는데, 같은 것을 가리키고 있으면, 불편함

        branch 명령어로 지금 위치를 기준으로 앞으로 수정되는 내용을 다른 branch에서 기록되도록 함

        => 만들 때 현재 내가 있는 위치의 branch의 이력들을 기반으로 만들어짐

      • Branch

        Local에 새로운 Branch를 만드는 것

        git branch 이름
        
      • -d

        Local의 브랜치를 지우는 것

          git branch -d 삭제할브랜치이름
        

        원격 저장소의 branch를 지우고 싶을 경우

          git push 원격 저장소 -d 원격 브랜치 이름
        

        으로 설정

    • Switch

      아주 중요 아래의 Checkout과 마찬가지로 Branch를 이동하는 명령어

      다만 Checkout은 사실 기능이 특정 Commit으로 이동하는 등 여러 기능이 있어 혼란을 줄이고자 대 Branch 이동 전용 명령어로 생겼음

      특히 최근에 팀프로젝트를 하면서 Checkout으로 하면 제대로 Remote Branch와 Local Branch의 setup이 제대로 안되는 등 뭔가 오류가 생겼었는데, Switch로 하니까 전혀 이상 無

      Git Version을 처음에 노트북에 설치할 때 제외하고는 업데이트 한 적이 없는데도 최신 버전인 거 보면 내부에서 업데이트를 하나 싶기도

      여튼 브랜치 전환에는 무조건 Switch로 쓰는게 정신 건강에 좋은 듯

      참고로 Switch는 Local Branch로만 전환할 수 있고, Checkout은 Remote Branch로도 전환할 수 있음

      git switch 이동할 브랜치  
      
    • Checkout

      저장소에 있는 Branch들을 부루마블의 각각 하나의 도시라고 생각해보자

      이 때 내가 위치하고 있는 브랜치를 원하는 Branch로 이동하는 것이 Checkout 명령어

      git checkout 이동하고자하는로컬브랜치
      

      간혹 원래라면 remote와 연결되어있어야 할 branch가 이상하게 branch로 만들고 checkout으로 들어가보면 연결이 안되는 경우를 발견

      이때는 branch를 만들 때

      git checkout -b 만들브랜치이름 원격저장소/원격브랜치
      

      로 하면 원격 저장소의 브랜치와 연결됨과 동시에 만들어진 branch로 이동함

    • Merge

      다른 branch의 commit 내용들을 가져오는 것

      git merge 내가있는branch로가져오고싶은branch
      
    • Restore

      파일 수정을 되돌리는 것

      만약 파일을 건드렸다가 필요없어져서 다시 가장 최신 커밋 그대로의 상태로 만들고 싶다면 사용

      파일 경로를 붙혀 넣으면 해당 파일만 돌아가고 *를 해주면 모든 파일이 최신 커밋 상태로 돌아감

      // 특정 파일에 대한 상태 되돌리기
      // 경로를 모르겠으면 git status 명령어를 치면 수정된 파일에 대한 경로가 나오는데 원하는 것을 복사해서 붙혀넣을 것
      git restore 파일경로
      
      
      // 모든 수정 내역에 대해서 되돌리기
      git restore *
      
    • Reset

      커밋을 지우는 것

      여러가지 옵션이 있을테지만 주로 내가 쓰는 것만을 간략하게 적어놓음

      revert라는 commit을 되돌리는 명령어도 있지만 이러한 것은 되돌렸다는 commit이 남아버림

      혹시 commit을 아예 삭제시켜서 깨끗?하게 유지시키고 싶다거나 할 때 아래와 같은 명령어를 사용

      // HEAD(내가 가리키고 있는 곳)을 기준으로 몇개를 지울지 설정
      git reset --hard HEAD~지울커밋숫자개수
      

      이렇게 하고 내역을 Remote에도 반영을 해야 할 텐데, 정상적인 상황은 아니기 때문에 빨간 줄 뜨면서 push가 되지 않을 것임

      git push origin -f 원격저장소/원격브랜치로 강제 업데이트로 덮어씌워버리기

    • Stash

      혹시 작업을 하고 보니 다른 Branch에서 한 것을 뒤늦게 눈치챈 적이 있는가?

      그렇다면 이 명령어가 구원해 줄 것

      status X

      현재 수정 내역을 임시 저장소로 옮겨놓는 느낌

      git stash
      

      이렇게 stash 명령어로 변경 내역을 저장하고 나면 checkout으로 branch를 이동한 다음,

      git stash pop
      

      으로 저장했던 변경 내역을 불러오자

      • CherryPick

        혹시 다른 branch 등의 commit을 반영하고 싶다면?

        이 명령어를 기억하자

          git cherry-pick 복사하고싶은커밋해시
        

        커밋 해시는 git log를 실행해서 commit을 보면 웬 긴 값이 보이는데 이게 hash임


© 2025. Na2te All rights reserved.