Git 사용 시에 발생하는 문제 해결

pentorb·2024년 4월 28일
1

들어가며

국비교육 과정 중 미니프로젝트를 할 때 Git과 GitHub를 사용하여 버전 관리를 했다. 처음으로 프로젝트를 해봤지만 명령프롬프트에서 Git을 사용하다보니 발생했던 문제를 쉽게 해결할 수 있었다. 프로젝트를 하면서 어떤 상황이 있었고 어떻게 해결했는지 정리하려고 한다.

Git은 명령프롬프트를 통해 사용했는데 cd 프로젝트 디렉토리를 입력하여 현재 위치를 이동시킨 후에 아래의 명령어를 입력해야 한다. 프로젝트에서 브랜치는 나누지 않았고 모두 main 브랜치를 이용했다.


일반적인 pull 받는 방법

팀원 중 누군가가 작업을 완료하여 push 했다면 해당 커밋이 최신 커밋이 된다. 커밋을 pull 받아서 커밋을 최신으로 유지하려고 할 때 같은 브랜치에서 작업을 하고 있었다면 나의 작업 내용을 잃을 수도 있다. 그래서 pull을 받기전에 나의 작업내용을 저장하는 것이 좋다.

해결방법

  1. git stash를 입력하여 현재 작업 내용을 저장한다
  2. git pull를 입력하여 다른 사람의 커밋을 pull 받는다
  3. git stash pop으로 저장한 작업 내용을 불러온다

최신 커밋을 pull 받지 않고 푸시한 경우

다른사람이 push한 것을 모르고 push를 할 수 있다. 이때 커밋까지는 수행되지만 push가 정상적으로 이루어지지 않는다.

해결방법

  1. git reset HEAD~1을 입력하여 가장 최신 커밋 1개를 삭제한다
  2. git stash를 입력하여 작업 내용을 저장한다
  3. git pull를 입력하여 다른 사람이 푸시한 최신 커밋을 풀 받는다
  4. git stash pop으로 저장한 작업내용을 불러온다
  5. git add -A git commit -m "Commit Message" git push origin main으로 나의 작업 내용을 푸시한다

4번의 과정에서 Unmerged...가 표시될 수 있다. 해당 파일을 보면 pull을 받은 파일에 있던 내용과 stash로 임시 저장 되어있던 내용이 모두 있으므로 둘 중 하나를 지우거나 두개의 내용을 합쳐서 수정하면 된다.

Push한 가장 최근 커밋을 삭제하기

Push를 하고 난 후에 잘못했다는 것을 알았을 때 해당 커밋을 삭제할 수 있다. 이것은 잘못된 커밋을 pull 받아서 삭제하려는 경우에도 똑같이 적용할 수 있다.
커밋을 삭제하지 않고 수정하여 다시 push할 수도 있겠지만 작업내역을 깔끔하게 하기 위해 삭제 했었다. 이때 필요한 모든 파일은 이전 커밋에 존재한다고 가정한다.

해결방법

  1. git reset HEAD~1을 입력하여 가장 최신 커밋 1개를 삭제한다
  2. git reset --hard를 입력하여 이전 커밋을 기준으로 파일을 변경한다
  3. git clean -fd를 입력하여 이전 커밋에 존재하지 않았던 파일을 삭제한다
  4. git push origin +main으로 현재 상태를 강제 push하여 GitHub에서 표시되었던 최신 커밋을 삭제한다

1번에서 삭제할 커밋이 여러개라면 그 개수를 1 대신 입력하면 된다.


마무리

여러명이 함께 프로젝트를 하다보니 충돌이 발생하는 경우가 많았다. 브랜치를 나눠서 작업했다면 작업 공간이 나눠져 충돌을 줄일 수 있었을 것이다.

Git이 처음에는 복잡하게 느껴질 수 있지만 파일의 버전 관리를 하는데 유용하고 깃크라켄이나 소스트리 등의 프로그램을 사용하면 훨씬 편리하게 이용할 수 있다.

profile
성장하는 개발 블로그

0개의 댓글

관련 채용 정보