상세 컨텐츠

본문 제목

Git 기본 개념 이해하고 관리하기

경험 리뷰/한국경제 with Tossbank

by shok11 2024. 8. 29. 09:30

본문

728x90
반응형

 

 

[K-Digital Training] 한국경제신문 with toss bank

 

 

 

중간 프로젝트에서 공동 작업을 진행 하면서 Git이 정말 중요하다는걸 깨닫고 정리해 둡니다.

 


 

 

++  내가 지금 사용해야 하는 코드 정리.  ++

 

 

프로젝트 클론(복사) 하기.

# GitHub에 있는 프로젝트를 자신의 컴퓨터로 복사.
git clone https://github.com/..MidProject.git
# 프로젝트 폴더로 이동
cd MidProject

 

 

브랜치 생성 및 전환

# 브랜치 생성
git branch "브랜치 명"
# 브랜치로 이동
git checkout "브랜치 명"

 

 

코드 편집 및 변경 사항 커밋

# Visual Studio Code 실행
code .
# 모든 변경된 파일을 Git이 추적
git add .
# 변경 사항을 "good"이라는 메시지와 함께 저장
git commit -m "good"

 

 

원격 저장소에 푸시 (Push)

# 수정한 내용을 GitHub에 업로드 (다른 팀원들이 볼 수 있다.)
git push

 

 

다른 브랜치로 전환하여 업데이트 가져오기

# main 브랜치로 전환
git checkout main
# 원격 저장소의 모든 브랜치 정보를 가져온다.
git fetch --all
# main 브랜치의 최신 변경 사항을 가져온다.
git pull
# Leeseunghun 브랜치로 돌아간다.
git checkout Leeseunghun
# main 브랜치의 최신 내용을 현재 브랜치에 병합.
git merge main

 

 

공동 작업 정리

# 모든 작업이 끝나면, 수정된 내용을 'main' 브랜치에 다시 반영하고 정리

git checkout main
# git merge Leeseunghun은 Leeseunghun 브랜치의 내용을 main 브랜치에 병합.
git merge Leeseunghun
# 병합된 내용을 GitHub에 업로드.
git push

 

 


 

- Git 기본 개념 이해하고 관리하기

 

1. Git 기본 개념

 

Git은 소스 코드를 관리하기 위한 분산 버전 관리 시스템이다.

모든 변경 사항을 기록하고, 다양한 사람들과 협업할 수 있도록 돕는다.

 

- 리포지토리 ( Repository ) : 프로젝트 파일과 변경 기록을 저장하는 곳. 로컬 리포지토리와 원격 리포지토리로 분류 된다.

- 커밋 ( Commit ) : 파일의 특정 시점 상태를 저장하는 작업, 각 커밋은 고유한 식별자를 가진다.

- 브랜치 ( Branch ) : 독립적인 작업 공간, 다른 브랜치와 병합할 수 있다.

- 머지 ( Merge ) : 한 브랜치의 변경 사항을 다른 브랜치에 통합하는 과정.

 

 

2. Git 설치 및 설정

처음 사용할 때 필요하다.

# Git 설치
sudo apt-get install git   # Ubuntu/Linux
brew install git           # macOS
choco install git          # Windows

# 사용자 이름과 이메일 설정
# "git config" Git에 사용자 정보를 설정한다. -> 커밋을 할 때 기록된다.
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

 

 

3. 리포지토리 생성 및 초기화

# 새로운 리포지토리 생성
mkdir new_project
cd new_project
git init
# "git init"은 원격 리포지토리를 초기화 한다.

# 기존 리포지토리 클론
git clone https://github.com/username/repository.git
# "git clone"은 원격 리포지토리를 로컬로 복사 한다.
cd repository

 

 

4. 브랜치 관리

# 브랜치를 사용하면 여러 사람이 동시에 작업할 수 있다.
# 새로운 브랜치 생성
git branch new_feature # new_feature라는 새 브랜치를 만든다.

# 생성한 브랜치로 전환
git checkout new_feature

# 브랜치 생성과 전환을 동시에
git checkout -b new_feature

# 현재 브랜치 확인
git branch

# 원격 브랜치 가져오기
git fetch --all

# 원격 브랜치에서 새로운 로컬 브랜치 생성
git checkout -b new_feature origin/new_feature

 

 

5. 코드 변경 및 커밋

# 코드를 변경한 후, 변경 사항을 커밋하여 저장한다.
# 파일 수정 후 / 현재 작업 상태를 보여준다.
git status

# 변경된 파일을 스테이징 영역에 추가 / 변경된 파일을 커밋할 준비 상태로 만든다.
git add file1 file2

# 모든 변경된 파일 추가 / 변경된 파일을 커밋할 준비 상태로 만든다.
git add .

# 커밋 생성
git commit -m "작업 내용 설명"

# 이전 커밋 수정 (주의: 이미 푸시된 커밋은 수정하지 않는 것이 좋습니다)
git commit --amend -m "수정된 커밋 메시지"

 

 

6. 원격 리포지토리에 변경 사항 반영

# 로컬에서 작업한 내용을 원격 리포지토리에 반영 한다.
# 원격 저장소에 변경 사항 푸시
# git push는 로컬 브랜치의 변경 사항을 원격 리포지토리에 반영 한다.
git push origin new_feature

# 변경된 브랜치를 원격 브랜치에 푸시 (처음 푸시할 때만)
# git push -u는 기본 추적 브랜치를 설정하여 이후 푸시를 간편하게 만든다.
git push -u origin new_feature

# 모든 브랜치의 변경 사항을 푸시
git push --all

 

 

7. 병합 및 충돌 해결

# 다른 사람의 작업과 자신의 작업을 병합할 때 출동이 발생할 수 있다. 이를 해결하는 방법
# main 브랜치로 이동
git checkout main

# 다른 브랜치 병합
# new_feature 브랜치의 변경 사항을 main 브랜치로 병합한다.
git merge new_feature

# 충돌 발생 시 충돌 해결 후 변경 사항 추가
git add file1

# 병합 완료
git commit -m "충돌 해결 및 병합 완료"

# 충돌이 발생하면, 해당 파일을 수동으로 수정하고 git add로 추가한 뒤 병합을 완료합니다.

 

 

8. 공동 작업의 정리

# 모든 작업이 끝나면 브랜치를 삭제하고, 정리할 수 있다.
# 병합된 브랜치 삭제 (로컬)
git branch -d new_feature

# 병합된 브랜치 삭제 (원격)
git push origin --delete new_feature

# 로컬에서 사용하지 않는 브랜치 삭제
git branch -D old_feature

 

 

9. 변경 사항 롤백

# 작업 중 실수가 발생한 경우, 이전 상태로 되돌리는 방법.
# 마지막 커밋을 취소 (단, 변경 내용은 보존)
git reset --soft HEAD~1

# 마지막 커밋을 완전히 취소 (변경 내용도 삭제)
git reset --hard HEAD~1

# 특정 커밋으로 되돌리기 (변경 내용 보존)
git revert commit_id

# 워킹 디렉토리의 모든 변경 사항을 취소 (커밋하지 않은 변경 사항)
git checkout -- .

# 스테이징 영역의 모든 변경 사항을 취소
git reset

 

 

10. Git 작업 기록 확인 및 되돌아보기

# 작업 기록을 확인하고, 필요한 경우 과거로 되돌아갈 수 있다.
# 작업 기록 확인 (자세히)
git log

# 작업 기록 간단히 확인
git log --oneline

# 특정 커밋으로 체크아웃 (해당 시점으로 워킹 디렉토리를 되돌립니다)
git checkout commit_id

# 브랜치와 관계없이 특정 커밋을 체크아웃하여 새로운 브랜치 생성
git checkout -b new_branch commit_id
728x90
반응형

관련글 더보기