Git의 주요 작업 흐름(local 한정 - pc, labtop 안에서만 동작하게 된다.)
1. 작업 트리(Working Tree)에서 파일을 수정한다.
2. 다음 커밋에 포함될 변경사항만 선택적으로 스테이징한다.(스테이징 영역에만 해당 변경사항을 추가)
3. 커밋을 수행한다. (스테이징 영역에 있는 파일들을 그대로 가져와 영구적으로 Git 디렉토리에 스냅샷으로 저장한다.)
git status 명령어로 상태 확인하기
git status 명령어를 입력하면 상태를 감지한다.
git status
/c/codes/git(각자 설정한) 디렉토리에 first.txt 파일을 생성하여 '첫번째 작업을 수행하였습니다.' 라는 텍스트를 입력하고
저장한다.(이 기록을 버전으로 남기기 위함.)
그리고 다시 Bash에서 ls -al 입력하여 first.txt 파일이 추가되었는지 확인한다.
확인되었다면 이전에 입력한 git status를 입력하여 아까와 다르게 Untracked files: 가 추가된 것을 확인한다.
- 폴더 안에 소스코드를 작성하였고 그 코드에 대한 기록을 남기기 위해 git add <file> 을 하라는 설명이 나올 것이다.
git add [파일] 명령어로 버전에 적용할 파일 지정하기
git add first.txt
- git add . : 변경이 일어난 모든것(파일)에 대해서 포함한다.
git add [파일명]을 입력하였다면 다시 git status를 입력하여 내용을 확인한다.
Changes to be committed: 하고 내용이 나오고 밑의 new file: first.txt를 확인할 수 있다.
- first.txt라는 파일이 Working Tree 기준으로 봤을 때 새로운 파일이 만들어졌음을 의미한다.
그리고 git rm --cached <file>을 unstage하기 위해 사용하라는 문구를 확인할 수 있다.
- git 명령어를 입력하고 rm에 대한 설명을 확인하면 rm은 working tree 또는 index에서부터 파일을 삭제하는 것을 의미한다. 또한 --cached는 index로부터 파일을 삭제한다고 나와있다. 이는 staging area로부터 파일을 제거(untracked file로 만들겠다)한다는 의미이다.
그러면 하라는 대로 git rm --cached <file>을 실행해보겠다.
git rm --cached first.txt
그리고 나서 ls -al 명령어로 파일들을 확인해 보면 first.txt 파일이 지워지진 않았다.
지금까지 한 내용을 요약하면 이렇다.
1. 처음에 working directory 안에서 first.txt를 생성하여 변경을 만들었다.
2. 그 파일에 대해서 staging area로 올릴 때 add를 활용했다. -> index에 위치하게 된다.
3. 다시 rm을 활용하여 unstaged되게 혹은 수정된 파일이라면 modified되게 할 수 있다. 이 때 index에서만 배제되게 하려면 --cached를 활용하면 된다는 것을 확인할 수 있다.
이제 commit으로 만들어보겠다.
- 다시 git add first.txt를 입력하고 git status를 입력하여 new file: first.txt를 확인한다.
- git commit -m "버전에 남길 메시지" 명령어로 버전을 만든다. (" " 안에 한글 입력도 가능하다.)
git commit -m "첫 번째 기능을 구현 완료하였습니다."
- 이를 수행하면 우리의 버전이 만들어진다.
다시 git status를 입력하면 이제 working tree clean을 확인 할 수 있다.
- 모든 변경사항에 대해서 더 이상 무언가가 없다는 의미이다.
이전 커밋들을 확인할 수 있는 방법이 있다.
- git log 명령어를 입력하여 이전 커밋들을 확인할 수 있다.
- 초기에 설정하면서 입력한 user.name과 user.email으로 커밋한 시간과 커밋 메시지 등을 확인할 수 있다.
- --graph는 조금 더 보기 좋게 확인할 수 있도록 하는 옵션이다.
git log --graph
이로써 첫 번째 커밋을 하나 만들어 보았다. (우리 컴퓨터 안에서만 쓸 수 있는 버전 -> local)
Git 커밋
- 커밋(commit)은 Git 저장소에 자신의 디렉토리에 있는 모든 파일에 대한 스냅샷을 기록하는 것이다.
- Git은 가능한 한 커밋을 가볍게 유지하고자 한다. -> 디렉토리 전체를 복사하지 않고, 저장소의 이전 버전과 다음 버전의 변경내역(delta라고도 한다)을 저장한다. 그래서 대부분의 커밋이 그 커밋 위의 부모 커밋을 가리킨다.
- Git의 커밋은 기능 추가, 버그 수정, 리팩토링(중복 코드 제거), 인터페이스 변경 등의 작업을 하는 시점에 시행한다.
Snapshot
- 특정 순간의 상태를 포착하고 저장하는 것
- Git에서의 Snapshot은 과거의 한 시점으로부터 변경된 사항에 대해서 기록을 남기는 것이다.
자주 사용하는 Git 커밋 옵션
1. -m "메시지" 또는 --message="메시지" -> 커밋 메시지를 직접 명령어에 포함시킨다.
2. -a 또는 --all -> 수정된 모든 파일을 자동으로 스테이징하고 커밋한다. 즉, git add 명령어를 생략한다.
3. --amend -> 최신 커밋을 수정한다. 이전 커밋에 새로운 변경사항을 추가하거나 커밋 메시지를 변경할 수 있다.
'Pre_Course > Git&Github' 카테고리의 다른 글
| Git&Github_06(내용 확인, 변경사항(Snapshot) 비교하기) (0) | 2023.09.03 |
|---|---|
| Git&Github_05(local작업 GITHUB에 연동하기) (0) | 2023.09.02 |
| Git&Github_04(COMMIT 실습) (0) | 2023.09.02 |
| Git&Github_02(설정 및 매뉴얼 확인, Git의 세 가지 상태) (0) | 2023.08.27 |
| Git&Github_01(Git 개요 및 설치) (0) | 2023.08.26 |