5 분 소요

Summary

작은 커밋을 자주 하라.
작은 커밋을 자주 만드는 습관을 들이면 나중에 변경 사항을 추적하기 쉽고, 문제가 생겼을 때 특정 커밋으로 돌아가기도 편리해요. 커밋 메시지도 의미 있게 작성하는 것이 중요해요.

브랜치를 적절하게 사용하라
새로운 기능, 버그 수정, 실험 작업 등 목적에 맞는 브랜치를 만들어 작업하세요. 보통 main(또는 master) 브랜치에는 안정된 코드만 머지하고, 개발 브랜치나 기능별 브랜치를 만들어 작업하면 좋습니다.

커밋 메시지 작성 규칙을 정하라
커밋 메시지는 작업 내용을 잘 요약해서 다른 사람이 이해하기 쉽게 작성해야 해요. 예를 들어, feat: 로그인 기능 추가 또는 fix: 비밀번호 유효성 검사 버그 수정 같은 규칙을 정해서 사용하면 좋아요.

rebase와 merge의 차이를 이해하라.
다른 브랜치의 변경 사항을 가져올 때는 mergerebase의 차이를 이해하고, 상황에 맞게 사용하세요. rebase는 커밋 히스토리를 깔끔하게 만들 수 있지만, 공동 작업 중일 때는 주의가 필요해요.

push하기 전에 로컬에서 잘 테스트하라. 로컬에서 충분히 테스트를 마친 후에 push하세요. 특히 여러 사람이 협업하는 프로젝트에서는 테스트가 중요해요. 로컬에서 잘 동작해도 다른 환경에서는 오류가 발생할 수 있으므로, CI/CD를 통해 자동화된 테스트를 추가하는 것도 좋은 방법입니다.

GitHub의 Pull Request(Pull Request)나 Merge Request 기능을 활용하라.
협업 중이라면 Pull Request(Merge Request)를 통해 코드 리뷰를 받는 것이 좋아요. 다른 사람들의 의견을 듣고 코드 품질을 개선할 수 있습니다.



작은 커밋(Commit)

작은 커밋을 자주 하고, 의미 있게 커밋 메시지를 작성하는 방법을 단계별 명령어로 설명할게요.

1. 변경 사항을 확인하고 파일 추가하기

먼저 파일을 수정하고, 변경 사항을 확인합니다. 다음과 같은 명령어를 사용해 현재 변경된 파일 목록을 확인할 수 있습니다.

git status

이 명령어는 수정된 파일이 무엇인지 보여줍니다. 예를 들어 file1.txtfile2.txt가 수정되었다고 합시다.

2. 스테이지에 파일 추가하기

변경한 파일 중 커밋에 포함할 파일을 선택해 스테이징합니다. 작은 변경 사항마다 나누어 커밋을 만드는 것이 좋기 때문에 필요한 파일만 추가합니다.

git add file1.txt

위 명령어는 file1.txt 파일을 스테이징합니다. 만약 모든 파일을 한 번에 스테이징하려면 아래와 같이 .을 사용할 수도 있습니다.

git add .

하지만 작은 단위로 커밋하려면 필요한 파일만 추가하는 것이 좋습니다.

3. 커밋 메시지 작성하기

스테이징된 파일을 작은 단위로 자주 커밋합니다. 커밋 메시지는 작업 내용을 간결하고 명확하게 설명하는 것이 중요합니다.

git commit -m "feat: Add user login functionality"

위 명령어에서 "feat: Add user login functionality"는 커밋 메시지로, “로그인 기능 추가”라는 작업 내용을 의미 있게 설명합니다. 커밋 메시지는 통일된 형식을 사용하는 것이 좋습니다. 예를 들어:

  • feat: 새로운 기능 추가
  • fix: 버그 수정
  • docs: 문서 수정
  • refactor: 코드 리팩토링

4. 커밋 내역 확인하기

작업이 완료되면 커밋 내역을 확인하여, 커밋이 제대로 반영되었는지 확인할 수 있습니다.

git log --oneline

이 명령어는 간단한 커밋 내역을 보여주며, 커밋 메시지와 함께 커밋의 순서를 확인할 수 있습니다.

예제 요약

전체적인 과정은 아래와 같습니다.

git status                        # 변경 사항 확인
git add file1.txt                 # 작은 단위로 스테이징
git commit -m "feat: Add user login functionality"  # 의미 있는 커밋 메시지 작성
git log --oneline                 # 커밋 내역 확인

이 과정을 반복하면서 작은 단위로 커밋을 하면 히스토리가 깔끔하고 추적하기 쉬워집니다.



Branch 따기

브랜치를 활용한 Git 작업을 더 상세히 설명할게요. 새로운 기능을 개발하거나 버그를 수정할 때, 별도의 브랜치를 만들어 작업하는 것이 좋습니다. 브랜치를 나눠서 작업하면 안정적인 main 브랜치에 영향을 주지 않으면서 여러 작업을 동시에 진행할 수 있습니다. 아래에 단계별로 브랜치 생성, 전환, 병합 등을 설명하겠습니다.

1. 브랜치 생성하기

새로운 기능을 개발하려면 먼저 새로운 브랜치를 만듭니다. 보통 main 또는 master 브랜치에서 시작해서 새로운 브랜치를 만듭니다.

git checkout -b feature/login

위 명령어에서 feature/login은 새로 만들 브랜치의 이름입니다. 브랜치 이름은 작업 내용을 잘 표현하도록 정하는 것이 좋습니다. 예를 들어 feature/login은 로그인 기능 추가를 의미합니다.

2. 브랜치 확인하기

현재 어느 브랜치에 있는지 확인하려면 다음 명령어를 사용할 수 있습니다.

git branch

이 명령어를 사용하면 모든 브랜치 목록이 나타나며, 현재 작업 중인 브랜치가 강조됩니다.

3. 브랜치에서 작업하고 커밋하기

새 브랜치에서 파일을 수정하고, 커밋을 진행합니다. 예를 들어, 로그인 기능을 구현하고 나서 다음과 같이 커밋합니다.

git add .
git commit -m "feat: Implement login functionality"

이 작업은 feature/login 브랜치에만 적용되며, main 브랜치에는 영향을 주지 않습니다.

4. 원격 저장소에 브랜치 푸시하기

팀원들과 작업을 공유하거나 백업을 위해 브랜치를 원격 저장소로 푸시합니다.

git push origin feature/login

이 명령어는 feature/login 브랜치를 원격 저장소에 추가합니다.

5. 브랜치 병합하기

작업이 완료되면 feature/login 브랜치를 main 브랜치에 병합합니다. 먼저 main 브랜치로 전환한 후 병합합니다.

git checkout main
git pull origin main         # 최신 상태로 업데이트
git merge feature/login      # feature/login 브랜치 병합

이제 feature/login 브랜치의 변경 사항이 main 브랜치에 반영됩니다.

6. 병합 후 브랜치 삭제하기

작업이 끝난 브랜치는 삭제하여 깔끔하게 관리합니다.

git branch -d feature/login

이 명령어로 로컬에서 브랜치를 삭제할 수 있습니다. 원격 브랜치도 삭제하려면 다음과 같이 합니다.

git push origin --delete feature/login



전체 예제 요약

  1. 새 브랜치 생성 및 전환:

    git checkout -b feature/login
    
  2. 작업 후 커밋:

    git add .
    git commit -m "feat: Implement login functionality"
    
  3. 원격 저장소에 브랜치 푸시:

    git push origin feature/login
    
  4. main 브랜치에 병합:

    git checkout main
    git pull origin main
    git merge feature/login
    
  5. 브랜치 삭제:

    git branch -d feature/login
    git push origin --delete feature/login
    

이 과정을 통해 깔끔하게 브랜치를 관리하며 안전하게 새로운 기능을 개발할 수 있습니다.



git log 활용하기

커밋 내역을 확인하는 명령어인 git log를 사용하여, 예제를 통해 설명해드릴게요. git log를 통해 커밋 히스토리를 볼 수 있으며, 커밋 메시지, 커밋 ID, 작성자, 시간 등이 표시됩니다.

예제: git log 사용하기

아래는 git log 명령어를 실행했을 때의 예시입니다.

$ git log
commit 8a7c2b1d7a4a6c3fbc6b9a7ef2b86f4cd2b0a688 (HEAD -> main)
Author: Kayser So <dorumugs@gmail.com>
Date:   Thu Nov 15 10:00:00 2024 +0900

    feat: Implement login functionality

commit e45b78d4c3e1b3c2d8f0f6e92b4a6e7d3a9f8e3b
Author: Kayser So <dorumugs@gmail.com>
Date:   Wed Nov 14 14:00:00 2024 +0900

    fix: Correct typo in README file

commit 9f8e4f3c2d8f6a5d6b3c9e8a7d4b3f6e9f2b1a7b
Author: Kayser So <dorumugs@gmail.com>
Date:   Tue Nov 13 09:30:00 2024 +0900

    docs: Update project documentation

git log 결과에는 다음과 같은 정보가 포함되어 있습니다:

  1. 커밋 ID 각 커밋에는 고유한 ID가 있습니다. 예를 들어 8a7c2b1d7a4a6c3fbc6b9a7ef2b86f4cd2b0a688은 첫 번째 커밋의 ID입니다. 이 ID를 통해 특정 커밋으로 돌아가거나 특정 커밋을 참조할 수 있습니다.
  2. 브랜치 정보 (HEAD -> main)은 현재 main 브랜치에 위치해 있음을 나타냅니다. HEAD는 현재 브랜치를 가리키며, 현재 브랜치가 main이라는 의미입니다.
  3. 작성자 정보 커밋 작성자의 이름과 이메일 주소가 표시됩니다. 예를 들어, Author: Kayser So <dorumugs@gmail.com>는 작성자가 Kayser So이며, 이메일이 dorumugs@gmail.com임을 보여줍니다.
  4. 날짜와 시간 각 커밋의 작성 날짜와 시간이 표시됩니다. 예를 들어, Thu Nov 15 10:00:00 2024 +0900는 첫 번째 커밋의 작성 시간입니다.
  5. 커밋 메시지 각 커밋에 대해 작성한 메시지입니다. 예를 들어 feat: Implement login functionality는 로그인 기능을 구현했음을 나타냅니다. 커밋 메시지를 일관성 있게 작성하면 변경 사항을 쉽게 파악할 수 있습니다.

간단한 git log --oneline 예제

히스토리를 간단히 보려면 --oneline 옵션을 사용할 수 있습니다. 이 옵션은 커밋 ID의 앞부분과 커밋 메시지만 보여줍니다.

$ git log --oneline
8a7c2b1 feat: Implement login functionality
e45b78d fix: Correct typo in README file
9f8e4f3 docs: Update project documentation

이렇게 간단한 형태로 커밋 내역을 확인하면 전체 히스토리를 한눈에 파악하기 쉽습니다.

정리

  • git log: 자세한 커밋 내역을 확인할 수 있습니다.
  • git log --oneline: 간단한 형식으로 커밋 내역을 확인할 수 있습니다.