[Day50] Ubuntu- Git

Validator·2023년 8월 24일
0
post-thumbnail

Git의 기본 개념

  1. Repository (저장소): 코드와 해당 코드의 버전 기록을 저장하는 곳. 로컬 저장소와 원격 저장소로 나눌 수 있다.
  2. Commit (커밋): 코드나 파일에 대한 변경 사항을 저장소에 기록하는 행위. 커밋마다 고유한 ID가 부여된다.
  3. Branch (브랜치): 개발을 분리된 환경에서 진행하기 위한 수단. 기본적으로 'master' 또는 'main' 브랜치가 있으며, 여기에서 다른 브랜치를 생성할 수 있다.
  4. Merge (병합): 두 브랜치의 변경 사항을 하나로 합치는 행위.
  5. Rebase (리베이스): 한 브랜치의 변경 사항을 다른 브랜치에 적용하기 위해 사용. 이 과정에서 커밋의 기반을 변경한다.

Branch와 Merge

Git에서 브랜치는 코드의 다른 버전을 관리하는 데 중요하다. 예를 들어, 'feature' 브랜치에서 새로운 기능을 개발하고, 개발이 완료되면 이를 'main' 브랜치에 병합(merge)할 수 있다.

Merge의 과정

  1. Checkout: 병합하려는 대상 브랜치로 체크아웃한다. (예: git checkout main)
  2. Merge: 다른 브랜치의 변경 사항을 현재 브랜치에 병합한다. (예: git merge feature)

Merge 충돌

두 브랜치에서 같은 파일의 같은 부분을 수정했을 때 충돌(conflict)이 발생할 수 있다. 이런 경우에는 수동으로 충돌을 해결하고 변경 사항을 커밋해야 한다.

Rebase

Rebase는 기존의 커밋들을 새로운 베이스 위에 다시 적용하는 방식이다. 이는 커밋 히스토리를 깔끔하게 유지하는 데 도움이 된다.

Rebase의 과정

  1. Checkout: 리베이스할 브랜치로 체크아웃한다. (예: git checkout feature)
  2. Rebase: 현재 브랜치를 다른 브랜치에 리베이스한다. (예: git rebase main)

Rebase 중 충돌 해결

Rebase 중에도 충돌이 발생할 수 있다. 이 경우 충돌을 해결하고, git add를 사용해 변경 사항을 스테이징한 후, git rebase --continue를 실행하여 리베이스 과정을 계속 진행한다.

Node.js에서의 Git 사용

Node.js 프로젝트에서 Git을 사용하는 것은 언어나 프레임워크에 크게 의존하지 않는다. 하지만, 프로젝트의 의존성 파일(package.json, package-lock.json

등)을 올바르게 관리하는 것이 중요하다.

Node.js 프로젝트에서 Git을 사용할 때 주의할 점:

  • node_modules 폴더는 .gitignore 파일에 추가하여 Git 저장소에 포함되지 않도록 한다.
  • package.jsonpackage-lock.json 파일은 항상 커밋에 포함시켜 의존성을 정확하게 관리한다.

Git에서 Branch와 Merge 사용하기

1. 브랜치 생성 및 이동

먼저, 새로운 브랜치를 생성하고 그 브랜치로 이동하는 방법을 살펴보자.

# 'new-feature'라는 이름의 브랜치 생성
git branch new-feature

# 생성한 브랜치로 이동
git checkout new-feature

이 두 명령은 git checkout -b new-feature로 한 번에 수행할 수도 있다.

2. 변경 사항 커밋하기

변경 사항을 브랜치에 커밋하는 방법은 다음과 같다.

# 변경된 파일을 스테이징 영역에 추가
git add .

# 커밋 메시지와 함께 커밋 생성
git commit -m "Add new feature"

3. 병합(Merge)

병합은 한 브랜치의 변경 사항을 다른 브랜치에 통합하는 과정이다. 'new-feature' 브랜치의 변경 사항을 'main' 브랜치에 병합하는 방법을 보자.

# 먼저 'main' 브랜치로 이동
git checkout main

# 'new-feature' 브랜치의 변경 사항을 'main'에 병합
git merge new-feature

4. 충돌 해결

병합 중에 충돌이 발생하면, Git은 충돌을 수동으로 해결하라고 알려준다. 충돌이 발생한 파일을 열어 충돌 부분을 찾고, 필요한 변경을 수행한 후 다시 커밋한다.

# 충돌을 해결한 후
git add .

# 충돌 해결 커밋
git commit -m "Resolve merge conflict"

Rebase 사용하기

Rebase는 기존의 커밋들을 새로운 베이스 위에 다시 적용하는 과정이다. 이는 커밋 히스토리를 깔끔하게 유지하는 데 도움이 된다.

1. Rebase 시작하기

'new-feature' 브랜치를 'main' 브랜치의 최신 상태로 rebase하는 과정은 다음과 같다.

# 'new-feature' 브랜치로 이동
git checkout new-feature

# 'new-feature' 브랜치를 'main' 브랜치에 rebase
git rebase main

2. Rebase 중 충돌 해결

Rebase 중에 충돌이 발생할 수 있다. 이때는 충돌을 해결하고 rebase를 계속 진행한다.

# 충돌 해결 후
git add .

# 리베이스 과정 계속 진행
git rebase --continue

Rebase를 사용하면 커밋 히스토리가 깔끔해지지만, 공개된 브랜치에서는 사용을 주의해야 한다. 다른 사람들이 사용하는 브랜치에 rebase를 적용하면 혼란을 일으킬 수 있다.

Node.js 프로젝트에서의 Git 사용

Node.js 프로젝트에서 Git을 사용할 때는 특히 package.jsonpackage-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

0개의 댓글