현재 폴더의 Git 상태 확인
깃의 상태의 변화가 생긴다면 status에 변경된 점들이 나타난다.
$ git status
작업 디렉토리의 파일 상태 분류
- Untracked
변경점은 발생했으나, Git에 의해 관리되지 않고 있는 파일
( 단 한번도 Staging Area에 포함되지 않은 파일 즉, 새로 추가된 파일 )
- Tracked
Git에 의해 관리되고 있는 파일 , 추적되고 있는 파일
( Staging Area에 한 번 이상 포함된 파일 )
만약 내가 새로운 파일을 생성한 후 이를 단순히 저장만 한다면 이 파일은 UnTrack된 상태로 Working Directory에 위치하여 나의 PC에서만 관리되고 있는 파일 상태가 된다.
스테이징 영역에 파일의 변경점을 추가 ( 추적시작 )
작업 디렉터리의 변경 사항중 커밋할 파일들을 미리 스테이징 영역에 추가하는 데는 add 명령어를 사용한다.
$ git add TestFile.java
$ git status
위의 명령어를 통해서 변화한 파일이 Staging Area에서 변경점을 가진채로 commit 하기를 대기하게 된다.
이 예제에서는 TestFile.java가 Working Dir 와 Staging Area에서 모두 변경점을 가진 상태로 존재하고, 로컬 저장소는 수정되지 않은 파일을 가진채로 commit하기를 기다리게 된다.
Commit
- 스테이징 영역에 의미있는 변경점들이 쌓인 경우 변경점을 원격 저장소에 update하는 과정
- 커밋의 단위는 기능 or 이슈 or 파일 or 스프린트 주기 등 다양한 단위로 그룹의 정책마다 정해질 수 있다.
- 커밋의 단위가 너무 크다면 변경점을 파악하기 어렵고, commit의 merge과정에서 충돌이 발생할 확률이 증가한다.
커밋을 생성하는 방법
의미 있는 "변경 단위"라고 판단한 경우 , 로컬 저장소에 현재 파일 상태를 영구적으로 저장한다.
$ git commit
[master (root-commit) 771d7ac] Commit 1 for Test
1 file changed, 1 insertion(+)
create mode 100644 test.java
$ git commit -m " 커밋 메시지 "
- 에디터에서 'i' 를 입력하여 입력 상태로 만든다.
- Commit 메시지를 입력한다 ( 이는 Commit의 내용을 다른 사람들에게 전달하므로 중요함 )
- 그 후 Commit이 실행되고 콘솔창에 간단한 커밋한 결과를 출력한다.
- 추가로 -m을 통해서 인라인 형식으로 커밋 메시지를 한번에 전달하는 것도 가능하다.
Status
$ git status
On branch master
nothing to commit, working tree clean
- git status로 확인하면 working directory의 작업 내용이 모두 commit 되어서 원격 저장소와 동기화 되었으므로 더이상 커밋할 내용이 없다고 출력되게 된다.
- 한번 이상 추적을 시작한 파일은 Git에 의해 게속해서 관리된다. (modified 상태)
커밋의 히스토리 확인
$ git log
log를 통해서 커밋의 커밋 ID, 작성자, 날짜 , 커밋 메시지 등을 확인할 수 있다
커밋 ID는 Git이 SHA-1 이라는 해쉬 알고리즘을 통해서 자동으로 ID를 생성해준다.
GIt은 해당 해쉬 값을 가지고 Commit을 관리하게 된다.
git log 명령어 뒤에 --help 옵션을 추가하면 명령어의 메뉴얼 페이지가 실행된다.
log 옵션 | 결과 |
$ git log -u 'commit ID' | 커밋의 내용과 변경점을 출력함 ( git diff 내용 ) |
$ git log -숫자 | 최신 커밋을 기준으로 n개의 commit 변경점을 출력함 |
$ git log --name-only | 변경된 파일 이름들까지 추가로 리스트 형식으로 출력함 |
$ git log --oneline | 단일 커밋에 대해 한 줄의 내용으로 간략하게 출력함 |
$ git show 'commit ID' | git log -u 옵션과 동일한 결과 출력 |
변경된 코드 내용 확인
$git diff
- 작업 디렉토리에서 기존 코드 대비 변경점을 확인할 수 있다.
- 간단한 변경점 확인에는 사용하지만 , 변경점이 많다면 파악하기 어렵다.
커밋을 되돌리기
(1) 커밋 메시지 수정하기
$ git commit --amend
마지막 반영한 최신 커밋 메시지를 변경하고 싶을 때 실행함
최신 커밋 수정 가능한 에디터가 실행된다.
- 최신 커밋 메시지를 수정하게 된다.
- 되돌린 것을 복구 할 수 없다. ( 덮어쓰기가 실행됨 )
(2) 커밋 자체를 수정하기
- 파일을 수정 한 뒤, 스테이징 영역에 추가함
- git commit --amend 명령어로 커밋을 덮어쓰기
(3) 커밋 롤백하기
- 커밋 히스토리를 유지하면서 내용만 롤백하는 경우
- 히스토리 관리가 중요한 실무에서 사용됨
$ git revert "마지막 반영한 commit ID"
코드를 원복한다
= 반영한 특정 코드(변경점)를 제거한다.
= 반영한 커밋을 되돌린다.(revert 한다)
원격 저장소에 커밋 반영하기
$ git push [저장소 별칭] [현재 브랜치]
$ git push origin master
코드프레소의 강의에서는 GitHub가 아닌 GitLab을 사용하는데 GitLab 원격 저장소의 경우 Push를 하기 위해서는 계정의 이름과 비밀번호를 push마다 설정해주어야 한다.
git pull
원격 저장소의 현재 상태를 나의 로컬 저장소로 가져온다
코드프레소 Java 웹 개발 체험단 활동 중
코드프레소 웹 개발 트랙의 GIT 형상관리 내용입니다.
'EXTERNAL ACTIVITY > Code Presso -웹개발 트랙 체험단-' 카테고리의 다른 글
<코드 프레소 웹 개발 트랙> 처음 시작하는 자바 프로그래밍[4] (0) | 2022.01.13 |
---|---|
<코드 프레소 웹 개발 트랙 > Git 입문 (0) | 2022.01.13 |
<코드프레소 웹 개발 트랙> 처음 시작하는 Java 프로그래밍[3] (0) | 2022.01.13 |
<코드프레소 웹 개발 트랙 > 처음 시작하는 Java 프로그래밍[2] (0) | 2022.01.11 |
<코드 프레소 웹 개발 트랙 > 처음 시작하는 Java 프로그래밍[1] (0) | 2022.01.10 |