0. 환경
- m1 macbook
- IntelliJ (Vscode 등 다른 툴을 활용해도 됩니다.)
- git version 2.37.0
1. 프로젝트 디렉터리 생성
git-test라는 이름으로 디렉터리를 생성하여 IntelliJ로 열어줍니다.
추가적으로 IntelliJ로 프로젝트(디렉터리)를 열 경우에는 .idea 디렉터리가 생성되게 됩니다.
이 디렉터리는 Git에서 관여할 수 없도록 .idea 디렉터리에 .gitignore 파일에 내용을 추가하여 Git에서 관여할 수 없게 수정합니다.
# .idea dir all
/*
.gitignore
.gitignore의 경우에는 git 에서 무시할 수 있게(관리하지 않는) 설정 할 수 있는 파일입니다.
https://git-scm.com/docs/gitignore 참조
2. 프로젝트 Git 관리 시작
IntelliJ의 하단의 터미널을 열어 해당 프로젝트를 Git이 관리할 수 있도록 아래의 명령어를 사용해 Git 저장소를 생성합니다.
$ git init
git init으로 Git 저장소를 생성하게 되면 .git 디렉터리가 프로젝트 내에 생성됩니다.
ll -al
total 8
drwxr-xr-x 5 staff 160B 8 27 23:11 .
drwx------@ 22 staff 704B 8 27 19:35 ..
drwxr-xr-x 12 staff 384B 8 27 23:12 .git
drwxr-xr-x 8 staff 256B 8 27 23:11 .idea
(Mac의 경우 shift +command + . 키를 누르면 해당 폴더에 숨겨진 파일을 확인할 수 있습니다.)
3. Git 기본 최초 설정
아래의 명령어로 사용자 이름과 메일을 설정합니다.
$ git config --global user.name "이름"
$ git config --global user.email "이메일"
다음 명령어로 설정 한 값을 확인 할 수 있습니다.
$ git config --global user.name
????
$ git config --global user.email
????@gmail.com
다음 명령어로 기본 브랜치명을 변경합니다. (master → main)
변경 이유는 master(주인)-slave(노예)를 상기시키기 때문에 main으로 변경 할 것을 권장합니다.
$ git config --global init.defaultBranch main
4. 파일 생성
Commit 실습을 위해 프로젝트 내에 자유롭게 파일을 생성하고 내용을 작성합니다.
(파일명 one.txt)
다음 명령어로 현재 프로젝트의 Git 상태를 확인합니다.
$ git status
현재 브랜치 main
아직 커밋이 없습니다
추적하지 않는 파일:
(커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
one.txt
커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git add"를 사용하십시오)
생성한 파일이 Untracked File 상태로 Working Directory에 상태하고 있다는 내용을 알 수 있습니다.
[Working Directory]
새로 파일이 추가 그리고 기존 파일이 수정, 삭제되는 수정사항이 만들어지면 위치하는 공간
[파일의 상태]
Untracked File : 추적하지 않는 파일
: Add 된 적 없는 파일(새로 추가된 파일), ingnore 된 파일
Tracked File : 추적하는 파일
: Add 된 적 있고 변경내역이 있는 파일
5. Working Directory → Staging Area (git add)
이제 생성 된 파일을 git add 명령어를 이용해 Staging Area로 이동해봅니다.
$ git add one.txt
Git 상태를 확인해보면 Staging Area로 이동된 것을 알 수 있습니다.
$ git status
현재 브랜치 main
아직 커밋이 없습니다
커밋할 변경 사항:
(스테이지 해제하려면 "git rm --cached <파일>..."을 사용하십시오)
새 파일: one.txt
명령어 정리
Working Directory에 있는 단일 파일 add
$ git add (파일명)
Working Directory에 있는 파일 전체 add
$ git add .
[Staging Area] -> [Working Directory]
$ git rm --cached <파일>
[Staging Area]
파일을 옮기거나 압축을 하기 위해 존재하는 공간
커밋을 위한 준비 단계(작업을 위해 선택된 파일들)
6. Staging Area → Repository (git commit)
Staging Area 상태에 있는 파일을 commit 하여 Repository 상태로 이동해봅니다.
$ git commit -m "first commit message"
또는 아래와 같이 입력하게 되면 vi 편집 화면이 나오게 됨 편집 모드(i)로 들어가서 commit message를 작성하고 저장(:wq)
$ git commit
커밋 내역을 확인해봅니다.
$ git log
:q (나가기), j(아래), k(위)
IntelliJ의 경우에는 하단의 git탭을 눌러 GUI형태로 볼 수 있습니다.
(commit을 더 추가하여 확인)
git add + git commit
commit 하려는 모든 파일이 한 번이라도 add가 된적이 있는 파일인 경우(Tracked) add와 commit을 한 번에 할 수 있습니다.
$ git commit -am "add + commit"
7. 커밋 되돌리기(커밋 취소)
현재 위치에서 바로 이전 커밋으로 되돌리기(현재 커밋 취소), ^의 개수에 따라 여러 개의 이전으로 돌아 갈 수 있습니다.
$ git reset --option HEAD^
^말고 ~숫자로도 여러 개의 이전으로 돌아갈 수 있습니다.
$ git reset --option HEAD~5
특정 커밋 해시 상태로 돌아갈 수 있습니다.
$ git reset --option (commitHashValue)
--option
reset의 세 가지 옵션
• --soft: repository에서 staging area로 이동 (add 까지 된 상태)
• --mixed (default): repository에서 working directory로 이동 (add 되기 전 상태)
• --hard: 수정사항 완전히 삭제
예시
commit을 몇 개 더 만들고 실습 진행했습니다.
"second commit message" 커밋으로 돌아가 봅시다. (수정사항은 완전히 삭제합니다. --hard)
1. git log 또는 IntelliJ Git Tab을 이용하여 되돌리고자 하는 commit의 hash 값을 구합니다.
2. reset 합니다. (commit hash 값은 전체를 다 복사해서 사용해도 되고 앞에서 8글자 정도만 복사해서 짧게 사용해도 됩니다.
$ git reset --hard 127992a8
다음과 같이 과거의 commit으로 reset 됩니다.
8. 커밋 복구하기
reset을 실수로 잘 못 했더라도 log에 다 기록되기 때문에 커밋을 복구할 수 있습니다.
다음 명령어를 이용하여 작업한 전체 내역을 확인해 볼 수 있습니다.
$ git reflog
"fiveth commit message" commit을 다시 복구해봅니다. (좌측에 commit hash 값을 이용하여 reset 명령어를 활용하면 됩니다.)
'TOOL > Git' 카테고리의 다른 글
[Git] Git 다른 브랜치에서 원하는 Commit 가져오기 (3) | 2022.09.01 |
---|---|
[Git] Git 여러 개의 commit 합치기 (squash, git rebase -i, 병합) (0) | 2022.08.31 |
[Git] Git branch 사용하기 (branch 생성, 삭제, 이동, 수정) (0) | 2022.08.30 |
[Git] Git commit 취소하기, 되돌리기 (reset, revert) (1) | 2022.08.29 |
[Git] Git 기초 개념 (Git 사용 전에 알고 있어야 할 개념) (0) | 2022.08.27 |