목차
Git 이란?
- Git은 소스코드 버전 관리 시스템입니다.
Git 작업 흐름
- Git에서 작업 흐름은 크게 세 단계로 구분됩니다. 이 세 단계를 통해 파일의 변경 사항을 관리하고 기록합니다.
- 작업 디렉토리(Working Directory)
- 스테이징 영역(Staging Area)
- 저장소(Repository)
- 작업 디렉토리(Working Directory)
- 이곳은 사용자가 실제 파일을 편집하고 작업하는 공간입니다.
- 파일의 수정, 생성, 삭제 등의 작업이 여기에서 이루어집니다.
- 스테이징 영역(Staging Area)
- 작업 디렉토리에서 변경된 내용 중 커밋하고자 하는 것들을 선택하여 스테이징 영역에 올립니다.(staging)
- 작업 디렉토리에서 Staging Area로 파일을 고르는 작업을 스테이징 한다고 말합니다.
- 이 단계는 저장소에 최종적으로 기록하기 전에 어떤 변경 사항을 포함할지 세밀하게 결정할 수 있는 단계입니다.
- git add 명령어를 사용하여 변경 사항을 스테이징 영역에 추가합니다.
- 작업 디렉토리에서 변경된 내용 중 커밋하고자 하는 것들을 선택하여 스테이징 영역에 올립니다.(staging)
- 저장소(Repository)
- 스테이징 영역에 올린 변경 사항들을 저장소에 커밋합니다.(commit)
- 커밋은 해당 시점에서의 프로젝트 상태를 스냅샷처럼 저장하는 것으로, 나중에 이 상태로 돌아갈 수 있게 해 줍니다. (일종의 하나의 버전입니다.)
- git commit 명령어를 사용하여 스테이징 영역의 변경 사항들을 저장소에 기록합니다.
Git 기본 코드
Git 초기 사용자 정보 등록
- 새로운 PC(환경)나, Git을 새로 설치한 경우는 사용자 정보를 등록해주어야 합니다.
-
git config --global user.email "내이메일주소" git config --global user.name "내이름"
- 이러한 정보를 등록해 주는 이유는 Git에서 각 커밋에 개인 식별 정보를 포함시키기 위함입니다. 협업을 할 때 누가 코드를 작성하고 수정했는지 알아야 합니다.
-
Git 초기 브랜치 세팅
- git init을 통해 버전관리를 시작하게 되면 기준이 되는 브랜치가 생성되게 됩니다.
- 이 생성되는 초기 브랜치 이름을 다음과 같이 설정해 줄 수 있습니다.
-
git config --global init.defaultBranch <새로운 브랜치 이름>
- 보통 github에 맞춰 git config --global init.defaultBranch main으로 많이 작성합니다.
-
- 만약 master브랜치로 이미 세팅이 된 경우 다음 코드를 통해 branch 명을 변경할 수 있습니다.
-
git branch -m master main
-
- 모든 설정 정보는 다음 코드로 확인 가능합니다.
-
git config --list
-
git init
- git init은 Git을 사용하여 버전 관리를 시작하는 첫 단계입니다.
- 즉 이 명령어는 새로운 Git 저장소(repository)를 생성하는(초기화) 명령어입니다.
- 이 명령어를 실행하면, 현재 디렉터리에. git이라는 하위 디렉터리가 생성되고, 이 디렉터리는 해당 프로젝트의 모든 버전 관리 정보(커밋, 브랜치, 태그 등)를 포함합니다.
git add & commit
- git add 명령어를 사용하여 변경 사항을 스테이징 영역에 추가하고, git commit 명령어를 사용하여 스테이징 영역의 변경 사항들을 저장소에 기록한다고 했습니다.
- git add
- 파일 스테이징 하기
-
git add 파일
-
- 여러 파일 스테이징 하기
-
git add 파일1 파일2 파일3 ...
-
- 모든 파일 스테이징 하기
-
git add .
-
- 참고 : 스테이징 한 파일 취소하기
-
git restore --staged 파일명
-
- 파일 스테이징 하기
- git commit
- 스테이징 된 파일들 커밋하기
-
git commit -m "커밋 메시지"
-
- 스테이징 된 파일들 커밋하기
- 위 기능들은 vscode 에디터에서도 사용이 가능합니다.
- git add
- + 버튼을 통해 Staging Area에 Staging 하거나 - 버튼을 통해 Staging Area에서 지울 수 있습니다.
- git commit
- Message 부분에 commit message를 입력하고 Commit을 누르게 되면 Repository에 커밋하게 됩니다.
- git add
git log
- 커밋한 내역들을 보고 싶을 경우 git log 사용
- git log 옵션
- 아무런 옵션이 없을 경우
- 아무런 옵션 없이 git log만 입력한다면 커밋의 해시, 저자, 날짜, 커밋 메시지를 표시합니다.
- --oneline 옵션
- 이 옵션은 각 커밋을 한 줄로 간결하게 표시합니다.
- 커밋 해시의 축약형과 커밋 메시지만을 보여줍니다.
- git log --oneline
- --all 옵션
- --all 옵션은 현재 체크아웃된 브랜치뿐만 아니라, 저장소의 모든 브랜치에 있는 커밋들을 표시합니다.
- git log --all
- --graph
- 브랜치와 머지 히스토리를 그래프로 표시합니다.
- --author="이름"
- 특정 저자의 커밋만을 보여줍니다.
- --since="날짜", --until="날짜"
- 특정 기간 동안의 커밋을 보여줍니다.
- 조합 사용
- git log --oneline --all처럼 조합해서 사용가능합니다.
- git log --oneline --all --graph
- 참고 : git log --oneline --all 시에 HEAD라는것이 존재하는데 이는 현재 내가 있는 브랜치를 의미합니다.
- 아무런 옵션이 없을 경우
git diff
- git diff을 사용하면 최근 commit과 현재 파일의 차이점을 보여주게 됩니다.
- 즉, 현재 작업폴더에 변경된 내용들이 최근에 커밋한 내용들과 비교를 하여 차이점을 보여주게 됩니다.
- " git diff 커밋아이디1 커밋아이디2 "를 통하여 특정 커밋과 특정 커밋 비교도 가능합니다.
- j / k로 스크롤바 조작 가능
- q는 종료
- 즉, 현재 작업폴더에 변경된 내용들이 최근에 커밋한 내용들과 비교를 하여 차이점을 보여주게 됩니다.
- 굳이 터미널을 이용하지 않고도 vscode 에디터에서 부가기능을 이용하여 git diff를 편하게 볼 수 있습니다.
- git graph 설치
- Source Control 창에서 git graph 아이콘을 클릭하면(새로고침 우측에 있는 아이콘) 커밋된 이력들에 대해서 변경사항들을 확인할 수 있습니다. (파일명 클릭)
- 또한 과거 커밋 이력과 현재 파일과 비교도 가능합니다. (파일명 우클릭 후 View Diff with Working File 클릭)
git status
- git status는 다음 정보를 표시해 줍니다.
- 현재 작업 중인 브랜치 정보
- 커밋할 변경사항(스테이징 영역의 파일)
- 커밋되지 않은 변경사항(스테이징 되지 않은 파일)
참고
'ETC > Git' 카테고리의 다른 글
[Git] GitFlow (0) | 2023.12.14 |
---|---|
[Git] GitHub 기본 (0) | 2023.12.14 |
[Git] commit 취소하기 (git revert) / commit reset하기 (git reset) (0) | 2023.12.14 |
[Git] Git commit된 파일로 복구하기 (git restore) (0) | 2023.12.13 |
[Git] Git branch / merge (0) | 2023.12.13 |