Git 사용법

siwoo·2023년 11월 28일
0

git은 개발자들이 프로젝트를 할 때 사용하게 되는 유용한 툴이다.

왜 필요할까?

버그를 찾아 수정하는 시간을 줄이고 협업 시 효율적인 병합을 위해 사용한다.

200만 줄이 넘어가는 코드를 작성하고 수정을 한다고 할 때 에러가 나면 어떤 부분이 문제인지 바로 알 수 있을까?

아마 문제의 부분을 찾기 위해 오랜 시간이 걸릴 것이다.

하지만 만약 수정 사항을 나누어 업데이트한 버전별로 정리해둔다면 문제가 생기는 부분을 찾기 쉬워질 것이다. 또 문제가 생기기 이전 버전으로 돌아갈 수도 있다면 편할 것이다.

협업을 할 때 각자 수정한 사항들을 컴퓨터가 알아서 병합해준다면 그것 또한 아주 편할 것이다.

git은 이러한 역할을 수행해준다.

작업환경

저장소 생성

  1. visual studio로 git을 적용하려는 프로젝트 폴더를 연다.

    파일 > 폴더 열기 > 프로젝트 폴더 선택

  2. 리포지토리를 초기화한다.

    소스제어> 리포지토리 초기화

  1. 저장소 생성 여부를 확인한다.

    프로젝트 폴더 하위 목록에 .git 폴더가 생성되었다면 잘 된 것이다.

    만약 .git 폴더가 없다면,

    ctrl+, 버튼을 누르거나 화면 왼쪽 하단에 있는 설정 버튼을 연다.
    exclude를 검색했을 때 패턴에 .git이 있으면 x 버튼을 눌러 삭제한다.

    리포지토리가 잘 생성되었다면 아래와 같이 .git 폴더가 프로젝트 하위목록으로 뜬다.

프로젝트 변경 내용 저장(commit)

프로젝트를 수정한 내용을 커밋할 때에는 최대한 작업 단위별로 할 수 있도록, 너무 많은 변경사항을 한번에 업데이트하지 않도록 주의한다.
한 번에 많은 것을 업데이트 해버리면 마찬가지로 어떤 부분이 문제인지 찾는 데에 또 시간이 오래 걸리게 된다.

이는 앞서 이야기했던 깃을 활용하는 이유 중 오류를 손쉽게 찾을 수 있게 하기 위한 의도를 무의미하게 만든다.

하지만 git은 개발자의 편의성을 위해 한번에 여러 작업 단위를 수정하더라도 따로 commit할 수 있도록 만들어준다.

이를 가능하게 하는 것은 staging이다.

예를 들어, 프로젝트 폴더 내에 세 파일을 생성하고 각각의 파일을 수정한다고 했을 때 작업단위 별로 저장하려고 한다.

작업단위 1, 2 각각 이렇게 두 번을 커밋해보자.

리포지토리를 초기화했던 소스제어 탭에서 file1 파일을 선택해서 오른쪽 + 버튼을 클릭한다.

커밋 창에 업데이트 명을 간략하게 기록한 후 커밋 버튼을 클릭한다. 여기서는 c1이라고 단순화했다.

이제 file2, file3 각각을 모두 + 버튼을 눌러 스테이징한다.

c2라고 기록한 후 커밋 버튼을 누른다.

이렇게 업데이트한 내용들을 vs code에서 한눈에 파악하기 좋은 확장 툴은 git graph이다.

git graph를 설치하고 나면

왼쪽 하단 화면에 Git Graph가 있음을 확인할 수 있다. 이를 클릭하면

커밋한 내용들을 확인할 수 있다.

다시 c1으로 돌아가서 수정을 하고 싶다면

  • c1 위에서 마우스 우클릭> Checkout or

  • git bash에서 명령어 입력> git checkout <이동하고자 하는 버전 id>

    commit version id의 경우

    c1을 클릭하면 commit: 옆에 나와있는 키를 복사해서 붙여넣으면 된다.

병합

git이 파일을 병합할 때는 파일을 수정하기 이전 원본파일과 각각 수정한 파일 버전들을 모두 모아서 라인별로 비교한다.

수정한 파일이 다른 파일이거나 다른 라인이라면 변경 사항이 있는 것을 반영해 그것만 업데이트하게 된다.

하지만 여러 개발자가 함께 프로젝트를 진행하다 보면 같은 파일의 같은 라인을 수정하게 되는 경우도 분명히 생길 수 있다.

이러한 경우에 git은 각 파일의 변경사항이 다르기 때문에 개발자보고 이를 직접 수정해야 한다는 메시지를 띄우게 된다.

  1. 작업 폴더 내에 함께 공동작업을 할 파일(together.txt)을 생성하고 아래의 초기 파일을 커밋한다.

  2. 커밋에서 main이라는 branch와 별개로 guest라는 branch를 생성한다.

    git graph에서 c2 마우스 우클릭 > create branch > name 입력 > create branch 버튼 클릭

  3. head가 guest를 가리키도록 한 후, together.txt를 수정하고 커밋한다.

  1. head가 main을 가리키고 있는 상태 그대로, together.txt를 수정하고 커밋한다.

  2. head가 guest를 가리키는 상태로 main에 병합한다.

    최근 버전 마우스 우클릭 > Merge into current branch

    Yes를 선택한다.

    일단 dismiss를 누른 뒤 왼쪽 탐색기에서 together.txt를 클릭한다.

파일을 열어보면 같은 라인을 수정해 충돌하는 부분은 색깔 표시를 해두고 나머지 부분은 수정한 부분만 반영된 것을 볼 수 있다.

오른쪽 하단의 병합 편집기에서 확인 버튼을 클릭한다.

맨 아래 결과 txt에 두 수정 결과를 취합한 것을 수정한 후 병합 완료 버튼을 누른다.

소스제어에 자동으로 뜨는 것을 커밋한다.

깃 그래프를 보면 위와 같이 병합이 완료된 것을 확인할 수 있다.

branch는 결국 작업에 대한 포인터로써 이를 삭제하고 싶다면

git bash에서
git branch -D <브랜치 이름>
을 입력하면 된다.

0개의 댓글