Repository(저장소)
깃 저장소에는 로컬 저장소와 원격 저장소가 존재한다. 원격 저장소로 push하기 전까지는 로컬 저장소에서만 작업하게 된다. 로컬 저장소에는 세 가지 영역이 있다.
- Working Directory - 작업 중인 곳 (add 하기 전)
- Staging Area - 어느 정도 작업하다가 버전 히스토리에 저장할 준비가 되어있는 곳. (add 후, commit하기 전)
- .git directory - 버전 히스토리를 가지고 있는 곳 (commit 후)
저장소 초기화
프로젝트를 Git으로 관리하려면 저장소를 초기화해야한다. 먼저 저장소 디렉터리로 이동한 뒤에 init 명령어를 입력한다.
$ git init
이 다음부터는 status로 상태를 확인할 수가 있다.
$ git status
On branch master
nothing to commit, working tree clean
이하의 예시는 인텔리제이에서 자바 프로젝트를 생성하여 /src/main/java 하위에서 진행되었다. 터미널은 git bash를 사용한다.
IntelliJ IDEA와 Git Bash 연동하기
1. ctrl + alt + s를 눌러 settings를 연다.
2. 검색 필드에 terminal 입력
3. Shell 경로를 "C:\Program Files\Git\bin\sh.exe" -login -i로 변경
파일 추가해서 add 후 commit 해보기
src/ 하위에 Member.java 파일을 추가하고 (아직 add는 하지 않은 상태이다) status를 확인하면 아직 추적하고 있지 않다는 Untracked files에 src/가 있는 걸 볼 수 있다. 아직 Member.java는 Working Directory에 있다는 뜻이다.
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
src/
nothing added to commit but untracked files present (use "git add" to track)
이 파일을 Staging Area로 옮겨보자.
$ git add .
이 명령어를 사용하면 추가된 전체 파일을 Staging Area로 옮긴다. 특정 파일만 옮기고 싶다면 그 파일 이름(혹은 경로까지 포함한)을 add 다음에 적어주면 된다. 그리고 status를 확인해보면 다음과 같이 상태가 변경되어 있다.
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: src/main/java/Member.java
이 상태는 아직 .git directory 에 옮겨가기 전, 즉 커밋된 상태는 아니다. 커밋 이력은 다음 명령어로 볼 수 있다.
$ git log
참고로 다음 명령어를 통해 Staging Area에서 Working Directory로 다시 가져올 수 있다.
$ git rm --cached src/main/java Member.java
커밋을 해보자.
$ git commit -m "feat: Member 도메인 생성"
$ git log
commit 439fecbe4e0e3a9699950e5134cc7464e1edd82b (HEAD -> master)
Author: DOES <ldk980130@gmail.com>
Date: Sat Feb 12 21:41:26 2022 +0900
feat: Member 도메인 생성
커밋 후 로그를 확인해보니 정상적으로 커밋된걸 확인할 수 있다.
.gitignore
.gitignore파일이란 Git 버전 관리에서 제외할 파일 목록을 지정하는 파일이다. git으로 프로젝트를 관리할 때, 그 프로젝트 안의 특정파일들은 Git으로 관리할 필요가 없는 경우가 있다.
# 이렇게 #를 사용해서 주석
# 모든 file.c
file.c
# 최상위 폴더의 file.c
/file.c
# 모든 .c 확장자 파일
*.c
# .c 확장자지만 무시하지 않을 파일
!not_ignore_this.c
# logs란 이름의 파일 또는 폴더와 그 내용들
logs
# logs란 이름의 폴더와 그 내용들
logs/
# logs 폴더 바로 안의 debug.log와 .c 파일들
logs/debug.log
logs/*.c
# logs 폴더 바로 안, 또는 그 안의 다른 폴더(들) 안의 debug.log
logs/**/debug.log
윈도우 사용자를 위한 줄바꿈 설정
$ git config --global core.autocrlf true
줄 바꿈이 윈도우는 crlf, 맥에서는 lf이다. 이 차이점 때문에 깃 저장소를 다양한 OS에서 사용하게 되면 문제가 생길 수도 있다. 윈도우에서 core.autocrlf를 true로 설정해주게 되면 깃에 저장할 때 carriage-return을 삭제하게 되고 다시 깃에서 윈도우로 가져올 때는 carriage-return을 붙여준다. 맥에서는 input으로 설정하면 깃에 저장할 때는 아무 일도 안하지만 깃에서 받아올 때 혹시 붙어있을 수도 있는 carriage-return을 삭제해준다.
'Git' 카테고리의 다른 글
Git 정리 세 번째 Branch, Merge, Rebase (0) | 2022.03.06 |
---|---|
Git 정리 두 번째 Reset과 Revert (0) | 2022.02.19 |
[Git] Upstream과 Origin이란? (0) | 2022.02.16 |