Git

Git 기초

CHun2 2024. 6. 13. 15:22
반응형

어느정도 Git을 사용할 수 있지만, 최근에 시작한 프로젝트에서 git flow 전략을 사용하기위해 간략하게 git 기초를 정리하고자 한다.

 

Git은 분산 버전 관리 시스템으로, 소프트웨어 개발에서 파일의 변경 내역을 관리하고 협업을 쉽게 할 수 있도록 도와준다. Git의 주요 개념과 기본 사용법을 알아보자.

 

주요 개념

 

1. 저장소(Repository)

  • 모든 파일과 그 파일의 변경 이력을 저장하는 곳
  • 로컬저장소(자신의 컴퓨터)와 원격 저장소(서버에 저장)가 있음

 

2. 커밋Commit)

  • 파일의 변경 사항의 하나의 단위로 묶어 기록하는 것
  • 각 커밋에는 고유한 식별자(SHA-1 해시)가 부여, 누가 언제 어떤 변경을 했는지에 대한 정보가 포함됨

 

3. 브랜지(Branch)

  • 여러 개의 독립적인 작업 흐름을 관리할 수 있게 해줌
  • 기본적으로 main, master 브랜치가 있고, 새로운 기능을 개발하거나 버그를 수정할 때는 새로운 브랜치를 만들어 작업함

 

4. 머지(Merge)

  • 한 브랜치에서의 변경 사항을 다른 브랜치에 반영하는 작업
  • 머지 충돌이 발생할 수 있으며, 충돌을 해결해야 함

 

5. 풀(Pull)

  • 원격 저장소의 변경 사항을 로컬 저장소에 가져오는 작업

 

6. 푸시(Push)

  • 로컬 저장소의 변경 사항을 원격 저장소에 반영하는 작업

 

 

기본 명령어

 

Git 설정

# 사용자 이름 설정
git config --global user.name "사용자 이름"

# 사용자 이메일 설정
git config --global user.email "사용자 이메일"

 

각 커밋의 작성자를 명확히 해야하기 위해 이름과 이메일 설정은 필수이다.

 

 

저장소 초기화

# 현재 디렉토리를 새로운 Git 저장소로 초기화
git init

# GitHub에 있는 저장소를 복제
git clone https://github.com/사용자명/저장소명.git

 

  • init은 현재 디렉토리에 git 저장소를 초기화 한다. 버전 관리를 시작할 수 있다.
  • clone은 원격 저장소를 복제하여 로컬 컴퓨터에 복사한다.

 

파일 상태 확인

# 현재 작업 디렉토리의 상태를 확인 (변경, 스테이징된 파일)
git status

 

  • 현재 작업 디렉토리의 변경된 파일, 스테이징이 된 파일, 스테이징이 되지 않은 파일의 상태를 확인 할 수 있다.

 

 

파일 추가 및 커밋

# 파일을 스테이지에 추가

git add <파일명> # 특정 파일 추가
git add . # 모든 변경 사항 추가

# 커밋(변경 사항을 저장소에 기록)
git commit -m "커밋 메세지"

 

브랜치

# 현재 브랜치 확인
git branch

# 새로운 브랜치 생성
git branch <브랜치명>

# 브랜치 변경
git checkout <브랜치명>

# 브랜치 생성과 동시에 변경
git checkout -b <브랜치명>

 

원격 저장소

# 원격 저장소 추가
git remote add origin <저장소 URL>

# 원격 저장소 목록 확인
git remote -v

# 원격 저장소에서 최신 변경 사항 가져오기(병합하지 않음)
git fetch origin <브랜치명>

# 원격 저장소에서 최신 변경 사항 가져오기(병합)
git pull origin <브랜치명>

# 변경 사항을 원격 저장소에 푸시
git push origin <브랜치명>

 

  • git fetch origin은 최신 변경 사항을 가져오는데, 병합되지 않는다. 대신 FETCH_HEAD 레퍼런스가 생성되는데, 이를 통해최신 변경사항을 가져올 수 있으며 최신 상태와 현재 로컬 상태의 차이를 비교할 수 있다.
# 원격 저장소에서 최신 변경 사항을 가져옴
git fetch origin

# FETCH_HEAD와 현재 로컬 HEAD 사이의 차이를 비교함
git diff FETCH_HEAD

# 특정 파일만 비교
git diff FETCH_HEAD -- <파일명>

 

 

  • git push를 시도했을 떄 충돌이 발생하면, 충돌을 해결한 후 다시 푸시해야 함
  • git merge origin/<브랜치명>으로 원격 저장소와 merge한 후 푸시 해야함

 

병합

# 현재 브랜치에 다른 브랜치의 변경 사항 병합
git merge <브랜치명>

 

로그

# 커밋 로그 확인
git log

 

기타 명령어

# 수정한 파일의 변경 내용 보기
git diff

# 마지막 커밋 수정 (스테이지된 파일 포함)
git commit --aned

# 원격 브랜치 목록 보기
git branch -r

# 브랜치 삭제
git branch -d <브랜치명>

 

  • git commit --amend는
  • 이전 커밋 메시지를 변경하거나,스테이징된 변경사항을 이전 커밋에 추가 할 수 있다.
# 커밋메세지 수정, 해시 번호는 변경됨
git commit --amend -m "새로운 커밋 메세지"



# 파일 수정 및 스테이징
git add <파일명>

# 이전 커밋에 수정된 파일 추가
git commit --amend

 

  • 이미 원격 저장소에 푸시된 커밋보다는 로컬에서만 존재하는 커밋에 사용하는 것이 좋다.
  • 또는 커밋을 하고 푸시하기 전에 변경사항이 있으면 사용하기 좋을듯 하다.