Git 이란?
분산 버전 관리 시스템(DVCS, Distributed Version Control System)이며,
소스 코드의 변경 이력을 관리하고 여러 사람이 협업할 수 있도록 돕는 도구입니다.
Git의 주요 기능
버전 관리 : Git은 파일의 변경 내역을 추적하고, 이전 버전으로 되돌릴 수 있도록 도와줍니다. 언제든지 코드의 이전 상태로 복원하거나 특정 시점의 상태를 확인할 수 있습니다.
분산형 관리 : Git은 분산형 시스템으로, 모든 개발자는 자신만의 로컬 저장소에서 작업할 수 있습니다. 로컬 저장소에서 커밋하고 브랜치를 만들며, 이를 원격 저장소와 동기화할 수 있습니다.
협업 : 여러 개발자가 동시에 작업할 수 있습니다. Git은 각자의 작업을 관리하고 병합할 수 있도록 해주며, 예를 들어 두 명의 개발자가 각각 다른 브랜치에서 작업한 후 이를 하나로 합치는 병합(Merge) 기능을 제공합니다.
분기(Branching) 및 병합(Merging) : Git은 여러 가지 브랜치를 만들어 독립적으로 작업할 수 있게 해줍니다. 예를 들어, 새로운 기능을 개발하는 동안 메인 코드베이스는 그대로 두고 작업을 진행할 수 있습니다. 작업이 완료되면 브랜치를 병합하여 코드베이스에 반영할 수 있습니다.
Git의 주요 특징
빠르고 효율적 : Git은 데이터를 압축하고 분산 저장하기 때문에 대규모 프로젝트도 빠르고 효율적으로 관리할 수 있습니다.
변경 이력 추적 : 각 커밋(commit)은 코드의 변경 사항을 기록하며, 언제, 누가, 무엇을 변경했는지를 추적할 수 있습니다.
협업 최적화 : Git은 팀 작업을 위해 최적화되어 있으며, 충돌(conflict) 해결 및 병합(Merge) 등의 기능을 제공합니다.
git 명령어
1. 저장소 생성 및 복제
git init : 새로운 Git 저장소를 생성합니다.
git clone <원격저장소 URL> : Git 저장소를 복제합니다.
2. 파일 상태 확인
git status : 현재 작업 디렉토리의 상태를 확인합니다.
추적되지 않은 파일이나 수정된 파일을 확인할 수 있습니다.
3. 파일 추적하기
git add <파일명> : 변경된 파일을 스테이징 영역에 추가합니다.
git add . : 모든 변경된 파일을 한 번에 스테이징 영역에 추가합니다.
4. 커밋하기
git commit -m "메시지" : 스테이징 영역에 있는 변경 사항을 커밋합니다.
git commit --amend : 마지막 커밋을 수정합니다.
5. 변경 내용 확인
git diff : 변경된 내용을 확인합니다.
git difftool : 작업 디렉토리와 스테이징 영역을 시각적으로 비교합니다.
git log : 커밋 히스토리를 전체를 확인합니다.
git log --oneline : 커밋 히스토리를 한줄로 확인합니다.
git blame <파일명> : 파일의 각 라인의 수정이력을 확인합니다.
ex )
6. 브랜치 관련 명령어
git branch : 현재 브랜치 목록을 확인하고, 현재 브랜치를 표시합니다.
git branch <브랜치명> : 새로운 브랜치를 생성합니다.
git checkout <브랜치명> : 다른 브랜치로 전환합니다.
git checkout -b <브랜치명> : 새로운 브랜치를 생성과 동시에 해당 브랜치로 전환합니다.
git branch -d <브랜치명> : 선택한 브랜치를 삭제합니다.
git merge <브랜치명> : 현재 브랜치에 다른 브랜치를 병합합니다.
git switch <브랜치명> : 다른 브랜치로 전환시킵니다.
7. 원격 저장소 관련 명령어
git remote add origin <저장소 URL> : 원격 저장소를 추가합니다.
git push origin <브랜치명> : 로컬 브랜치를 원격 저장소로 푸시합니다.
git push -u origin <브랜치명> : 다음번에 Git push나 Git pull을 실행할 때 브랜치를 명시적으로 지정하지 않아도 됩니다.
(로컬 브랜치와 원격 브랜치 사이의 추적 관계를 설정하는 역할)
git pull origin <브랜치명> : 원격 저장소에서 변경 사항을 가져옵니다.
git fetch : 원격 저장소의 정보를 가져옵니다.
git remote -v : 원격 저장소의 목록을 확인합니다.
8. 되돌리기 관련 명령어
git reset --soft HEAD^ : 직전 명령을 스테이징 영역으로 되돌립니다.
git reset --hard HEAD^ : 직전 명령을 완전히 삭제합니다.
git revert <커밋해시> : 특정 커밋을 취소하고 새로운 커밋으로 생성합니다.
git restore <파일명> : 작업 디렉토리의 변경사항을 취소합니다.
9. 임시저장 명령어
git stash : 현재 작업 내용을 임시저장합니다.
git stash list : 임시저장된 리스트를 보여줍니다.
git stash apply : 가장 최근의 임시저장 내용을 가져옵니다.
git stash pop : 가장 최근의 임시저장 내용을 가져오고 삭제합니다.
10. 태그 관련 명령어
Git tag란?
프로젝트의 특정시점을 표시하는 도구 입니다.
사용처로는 소프트웨어 배포버전(v1.1.0 v1.2.0) 표시로 사용합니다.
git tag : 태그 목록을 확인합니다.
git tag <태그명> : 태그를 생성합니다.
git tag -a <태그명> -m "메세지" : 주석이 있는 태그를 생성합니다.
git push origin <태그명> : 태그를 원격 저장소에 푸시합니다.
11. 이외 명령어
git reflog : Git 참조 로그를 확인합니다.
git rebase <브랜치명> : 브랜치를 재 배치합니다.
12. 자주 발생하는 문제해결
git clean -fd : 추적되지 않는 파일 또는 디렉토리를 삭제합니다.
git fetch --all : 모든 원격 브랜치 정보를 가져옵니다.
git rest --hard origin/<브랜치명> : 원격 브랜치로 강제 초기화합니다.
git remote remove origin : 기존 리포지토리 remote를 제거합니다.