Git에서 브랜치는 코드의 다른 버전을 관리하는 데 중요하다. 예를 들어, 'feature' 브랜치에서 새로운 기능을 개발하고, 개발이 완료되면 이를 'main' 브랜치에 병합(merge)할 수 있다.
git checkout main
)git merge feature
)두 브랜치에서 같은 파일의 같은 부분을 수정했을 때 충돌(conflict)이 발생할 수 있다. 이런 경우에는 수동으로 충돌을 해결하고 변경 사항을 커밋해야 한다.
Rebase는 기존의 커밋들을 새로운 베이스 위에 다시 적용하는 방식이다. 이는 커밋 히스토리를 깔끔하게 유지하는 데 도움이 된다.
git checkout feature
)git rebase main
)Rebase 중에도 충돌이 발생할 수 있다. 이 경우 충돌을 해결하고, git add
를 사용해 변경 사항을 스테이징한 후, git rebase --continue
를 실행하여 리베이스 과정을 계속 진행한다.
Node.js 프로젝트에서 Git을 사용하는 것은 언어나 프레임워크에 크게 의존하지 않는다. 하지만, 프로젝트의 의존성 파일(package.json
, package-lock.json
등)을 올바르게 관리하는 것이 중요하다.
Node.js 프로젝트에서 Git을 사용할 때 주의할 점:
node_modules
폴더는 .gitignore
파일에 추가하여 Git 저장소에 포함되지 않도록 한다.package.json
과 package-lock.json
파일은 항상 커밋에 포함시켜 의존성을 정확하게 관리한다.먼저, 새로운 브랜치를 생성하고 그 브랜치로 이동하는 방법을 살펴보자.
# 'new-feature'라는 이름의 브랜치 생성
git branch new-feature
# 생성한 브랜치로 이동
git checkout new-feature
이 두 명령은 git checkout -b new-feature
로 한 번에 수행할 수도 있다.
변경 사항을 브랜치에 커밋하는 방법은 다음과 같다.
# 변경된 파일을 스테이징 영역에 추가
git add .
# 커밋 메시지와 함께 커밋 생성
git commit -m "Add new feature"
병합은 한 브랜치의 변경 사항을 다른 브랜치에 통합하는 과정이다. 'new-feature' 브랜치의 변경 사항을 'main' 브랜치에 병합하는 방법을 보자.
# 먼저 'main' 브랜치로 이동
git checkout main
# 'new-feature' 브랜치의 변경 사항을 'main'에 병합
git merge new-feature
병합 중에 충돌이 발생하면, Git은 충돌을 수동으로 해결하라고 알려준다. 충돌이 발생한 파일을 열어 충돌 부분을 찾고, 필요한 변경을 수행한 후 다시 커밋한다.
# 충돌을 해결한 후
git add .
# 충돌 해결 커밋
git commit -m "Resolve merge conflict"
Rebase는 기존의 커밋들을 새로운 베이스 위에 다시 적용하는 과정이다. 이는 커밋 히스토리를 깔끔하게 유지하는 데 도움이 된다.
'new-feature' 브랜치를 'main' 브랜치의 최신 상태로 rebase하는 과정은 다음과 같다.
# 'new-feature' 브랜치로 이동
git checkout new-feature
# 'new-feature' 브랜치를 'main' 브랜치에 rebase
git rebase main
Rebase 중에 충돌이 발생할 수 있다. 이때는 충돌을 해결하고 rebase를 계속 진행한다.
# 충돌 해결 후
git add .
# 리베이스 과정 계속 진행
git rebase --continue
Rebase를 사용하면 커밋 히스토리가 깔끔해지지만, 공개된 브랜치에서는 사용을 주의해야 한다. 다른 사람들이 사용하는 브랜치에 rebase를 적용하면 혼란을 일으킬 수 있다.
Node.js 프로젝트에서 Git을 사용할 때는 특히 package.json
과 package-lock.json
파일의 관리가 중요하다. 이 파일들은 프로젝트의 의존성과 정확한 버전을 기록한다.
# package.json과 package-lock.json 파일 변경 사항
커밋
git add package.json package-lock.json
git commit -m "Update project dependencies"
또한 .gitignore
파일을 사용하여 node_modules
폴더나 로그 파일 등 저장소에 포함시키지 않을 파일을 지정할 수 있다.
# .gitignore 파일 예시
node_modules/
logs/
.env