본문 바로가기
컴퓨터일반

Git의 사용 흐름 정리

by 프로랑 2023. 10. 27.
728x90

Git을 사용하는 일반적인 흐름에 대해 알아보겠습니다.

Git에는 여러 가지 중요한 개념들이 있습니다. 그중에서도 Git을 실수 없이 사용하기 위해서는 다음 4가지 개념을 명확히 이해하는 것이 좋습니다. 간단한 질문에 답하면서 개념을 정확히 이해하고 있는지 확인해 보세요.

 

Git의 핵심 구조와 파일의 상태 변화

Git의 핵심 구조는 working directory, staging area, 그리고 repository로 구성되어 있습니다. working directory에서는 실제 파일을 수정하며, 이 변경 사항을 다음 커밋에 반영하기 위해 Stage에 보관합니다. git commit 명령어를 사용하면, staging area에 준비된 변경 사항이 repository로 이동하며, 새로운 버전이 생성됩니다. 파일 상태는 이 과정에서 'Untracked', 'Modified', 'Staged', 'Unmodified' 등으로 변화하게 됩니다.

  • 질문: 파일의 상태가 'Untracked'에서 'Unmodified'가 될 때까지 거치는 단계를 순서대로 나열해 볼 수 있나요?
    • staging area에 파일을 추가하고, 커밋하게 되면 'Untracked'에서 'Unmodified' 상태로 변합니다.

 

커밋 (commit)

커밋은 Git에서 매우 중요한 개념입니다. 커밋은 작업 내용의 '스냅샷'을 의미하며, 한번 커밋하면 이력이 남습니다. 이런 특성 덕분에 문제가 발생했을 때 이전 상태로 쉽게 되돌릴 수 있습니다. 한마디로 말하자면 커밋은 Git에서 관리하는 가장 작은 단위의 버전이라고 할 수 있습니다.

  • 질문: 커밋과 푸시에 대해서 비교하면서 설명해 주실 수 있을까요?
    • 커밋과 푸시는 완전히 다른 동작입니다. 커밋은 로컬 저장소에 변경 내역을 저장하는 동작이며, 푸시는 이 변경 내역을 원격 저장소에 업로드하는 동작입니다. 많은 초보자들이 이 두 가지를 혼동하며 사용하는 경우가 있습니다.

 

브랜치 (branch)

Git의 브랜치는 독립적으로 작업을 진행하고 그 결과를 저장할 수 있는 개별적인 흐름을 의미합니다. 브랜치를 사용하면, 서로 다른 작업을 별도로 진행하고 나중에 하나의 코드베이스로 병합할 수 있습니다. 이는 여러 개발자가 동시에 다양한 작업을 진행할 때 매우 유용합니다.

  • 질문: 브랜치를 버전이라고 말할 수 있을까요?
    • 브랜치는 특정 커밋을 가리키는 참조(reference)로, 이를 통해 우리는 여러 개의 작업을 독립적으로 진행할 수 있습니다.
    • git을 처음 접하는 사람들이 브랜치를 "버전"이나 "스냅샷"이라고 생각하는 이유는 브랜치가 특정 커밋을 가리키며, 그 커밋은 프로젝트의 특정 버전이나 상태를 '스냅샷'으로 저장하기 때문입니다. 따라서 어떤 면에서 보면, 브랜치가 특정 '버전'을 가리키고 있다고 볼 수 있습니다.
    • 하지만, 브랜치 자체가 '버전'이나 '스냅샷'이 아니라는 것이 중요합니다. 즉, 브랜치는 단지 '스냅샷'인 커밋을 가리키는 참조일 뿐입니다. 이 브랜치를 통해 우리는 서로 다른 커밋, 즉 서로 다른 '버전'이나 '스냅샷'을 쉽게 전환할 수 있습니다.

 

로컬 저장소와 원격 저장소

Git에서는 로컬 저장소와 원격 저장소라는 두 가지 저장소를 사용합니다. 로컬 저장소는 개인의 컴퓨터에 위치하며, 원격 저장소는 인터넷상의 서버 등에 위치합니다. 로컬 저장소에서 작업을 진행한 뒤, 원격 저장소에 푸시(push)하여 다른 사람과 협업하거나 백업을 생성할 수 있습니다.

  • 질문: git push를 수행할 때 아래와 같은 에러를 보신 적이 있을 겁니다. 이 에러는 왜 발생하는 것이고, 제안된 명령어는 어떤 의미인가요?
  • fatal: The current branch master has no upstream branch.
    
    To push the current branch and set the remote as upstream, use
    
    git push --set-upstream origin master
    
    • 해당 에러는 현재 master 브랜치가 원격 저장소의 브랜치를 추적하고 있지 않을 때 발생합니다. 즉, git push 명령어를 실행할 때 로컬 master 브랜치가 어떤 원격 브랜치로 푸시해야 하는지 알 수 없기 때문에 발생하는 것입니다.
    • git push제안된 명령어를 사용하면master 브랜치로 푸시하면서 원격 저장소의 origin에 있는 master 브랜치를 추적하도록 설정합니다. 이후부터는 git push 명령어를 실행할 때 원격 저장소의 origin/master로 자동으로 푸시됩니다.

 

일반적인 Git의 작업 흐름

자 이제 전반적인 Git의 개념에 대해서 모두 훑었습니다. 이제 일반적인 Git의 작업 흐름을 생각해 볼까요?

웹 사이트를 만드는 프로젝트에 참여하고 있다고 가정해 봅시다. 웹 사이트에 새로운 기능인 "사용자 프로필 페이지"를 추가하려고 합니다. 이때, 여러분들은 어떻게 작업을 수행하시나요? 아래 내용을 보시기 전에 메모장에 직접 적어보시고 비교해 보세요.

일반적인 경우 아래와 같은 방식으로 작업을 수행합니다.

  1. git pull: 먼저 원격 저장소에서 최신 코드를 받아옵니다. 이를 통해 현재 로컬 코드가 최신 상태인지 확인하고, 다른 사람이 진행한 작업을 로컬 리포지토리에 포함시킵니다.
  2. git checkout -b add_profile_page: 새로운 기능을 위한 브랜치를 생성합니다. 이 브랜치는 "사용자 프로필 페이지"를 추가하는 작업을 포함하며, 브랜치 이름에 이 내용을 반영하는 것이 좋습니다.
  3. git add -A: 새로운 프로필 페이지에 필요한 모든 파일과 변경 사항을 staging area에 추가합니다. 이는 새로운 HTML, CSS, JavaScript 파일 등이 될 수 있습니다.
  4. git commit -m "feat: add user profile page": staging area에 있는 변경사항을 커밋하여, 작업 내용에 대한 스냅샷을 생성합니다.
  5. git push: 커밋한 변경 사항을 원격 저장소에 푸시합니다. 이를 통해 다른 팀원들이 이 변경 사항을 볼 수 있게 됩니다.

모든 경우 위와 같은 작업 흐름을 따르지는 않지만, 매우 일반적이고 자주 사용하는 작업 흐름입니다.

728x90

'컴퓨터일반' 카테고리의 다른 글

Git의 PR merge에 대해 알아보자  (1) 2023.10.27
Git의 Pull Request(PR)에 대해 알아보자  (0) 2023.10.27
Git ignore 살펴보기  (0) 2023.10.26
Git stash 알아보기  (0) 2023.10.26
Git에서 자주 쓰는 커맨드 모음  (0) 2023.10.24