반응형
😸 Git 이란?
리누스 토르발스(Linus Benedict Torvalds)가 개발한 분산형 버전 관리 시스템이다.
리누스 토르발스 형님이 2005년도에 리눅스 커널 관리하는 기존 툴이 엉망이라 개발하였다. (너무 화가 나신 나머지 2주 만에...)
git은 로컬 컴퓨터 파일의 변경사항을 추적하고, 여러 사용자들 간의 파일에 대한 작업을 조율한다.
또한 여러 명의 개발자가 하나의 소프트웨어 개발 및 프로젝트에 참여(협업)할 때, 소스 코드를 관리하는데 주로 사용된다.
Git의 장점은?
- 분산 버전 관리 : 개발자가 독립적으로 작업할 수 있고 인터넷이 없는 환경에서도 작업이 가능하다.
- 브랜치 관리 : 효과적인 브랜치 관리를 제공, 병렬 작업과 기능 개발, 버그 수정을 동시에 진행한다
- 빠른 속도 : C언어 기반이고 로컬 저장소에서 작업하기 때문에 빠른 속도로 진행된다
- 변경사항 추적 및 병합 : 각 커밋마다 변경 사항을 추적하고, 병합(marge)을 통해 여러 브랜치의 변경 사항을 효율적으로 병합한다.
Git의 중요한 용어들
- Repository(저장소): Git은 모든 프로젝트의 기본 단위인 저장소를 사용한다. 저장소는 프로젝트의 모든 파일과 폴더, 이력 등을 포함하며, 로컬 컴퓨터나 원격 서버에 위치할 수 있다.
- Commit(커밋): 커밋은 Git에서 변경 사항의 스냅숏을 의미한다. 파일의 추가, 수정, 삭제 등의 변경 사항을 커밋으로 저장할 수 있으며, 각 커밋은 고유한 식별자(해시)를 가지고 있다.
- Branch(브랜치): 브랜치는 개발자가 독립적으로 작업할 수 있는 '가지'다. 기본적으로 'master'라는 기본 브랜치가 생성되며, 새로운 브랜치를 만들어서 기존의 코드와 독립적으로 변경 사항을 추가할 수 있다. 이후 변경 사항이 검증되면 브랜치를 합쳐(병합, merge) 기본 브랜치에 반영할 수 있다.
- Merge(병합): 브랜치에서 개발한 내용을 다른 브랜치나 기본 브랜치로 합치는 과정입니다. 서로 다른 브랜치에서 변경한 사항들을 하나로 통합하여 충돌을 해결하고, 변경 사항을 합치는 것이다.
- Pull(풀): 원격 저장소에서 최신 변경 사항을 가져오는 작업. 로컬 저장소와 원격 저장소의 변경 사항을 동기화하고, 로컬에서 작업하기 전에 최신 코드를 가져올 수 있다.
- Push(푸시): 로컬 저장소의 변경 사항을 원격 저장소에 업로드하는 작업. 로컬에서 작업한 커밋을 원격 저장소로 전송하여 다른 개발자와 공유하거나 백업할 수 있다.
Git에서 자주 쓰는 명령어들
설정 확인
git config -l
설정에 사용자 이름 및 이메일 추가
git config user.name "{name}"
git config user.email "{email}"
//초기설정 중 하나
//--global 옵션 추가 사용시 사용자의 모든 저장소에 적용
현재 상태 확인하기 - [수정된 파일 확인]
git status
브랜치 목록 확인
git branch
브랜치 이동
git checkout {branch}
//git checkout -b {branch} <- 브랜치 생성하고 이동 명령어
변경된 파일들을 스테이징 영역에 추가하기
git add . //모두 추가 할때는 .
git add index.html // 이 같은 경우 'index.html'만 추가
추가된 스테이징 영역에서 변경사항 커밋
git commit -m "{message}"
git commit -m "Fix: Change Class name" // 이와 같이 사용한다
푸시 ( git hub에 업로드)
git push {remote repository} {branch}
원하는 커밋으로 돌아가기
사용하면 특정 커밋 이후의 변경 내역을 유지하면서 현재 브랜치의 위치를 이동시킬 수 있다 (hard 옵션은 해당 커밋에 맞게 로컬 파일들이 강제로 변경됨)
git reset --hard {commit id}
git reset --soft {commit id}
작업 도중 스택에 저장하기 (작업 도중 브랜치를 바꾸는 경우)
git stash
git stash pop // 최근 stash를 꺼내면서 적용
git stash apply // 꺼내지 않고 적용만 하기
반응형