1. 프로젝트의 변경사항을 버전으로 저장하기(타임캡슐에 담기)
변경사항 확인
git status
추적하지 않는(untracked) 파일: Git의 관리에 들어간 적 없는 파일

파일 하나 담기
git add 파일명

모든 파일 담기
git add .

담은 파일을 커밋하기
깃에서 무언가를 commit 한다 -> 새로운 버전으로 만든다.
git commit

작업 | Vi 명령어 | 상세 |
입력 시작 | i | 명령어 입력 모드에서 텍스트 입력 모드로 전환 |
입력 종료 | ESC | 텍스트 입력 모드에서 명령어 입력 모드로 전환 |
저장 없이 종료 | :q | |
저장 없이 강제 종료 | :q! | 입력한 것이 있을 때 사용 |
저장하고 종료 | :wq | 입력한 것이 있을 때 사용 |
위로 스크롤 | k | git log등에서 내역이 길 때 사용 |
아래로 스크롤 | j | git log등에서 내역이 길 때 사용 |
FIRST COMMIT 입력한 뒤 저장하고 종료 |
i를 누르고 FIRST COMMIT을 입력한 다음 ESC를 누르고 :q를 타이핑하면 저장 없이 그냥 종료가 된다.

이상태로 :q!를 입력하면 저장 없이 강제 종료가 된다.(Vi 입력 모드에서 빠져나오게 된다.)

다시 git commit 입력어를 사용해서 Vi 입력 모드로 진입한다.
i를 누르고 FIRST COMMIT을 입력한다음 ESC를 누르고 :wq를 입력한다.




git commit -m "FIRST COMMIT" : 이렇게 커밋 메시지로 더 간단하게 작성할 수 있다.
2. 프로젝트의 변경사항을 만들고 commit 하기(타임캡슐에 묻기)
1. lions.yaml 파일 삭제
2. tigers.yaml의 manager를 Donald로 변경한뒤 leopards.yaml 파일 추가


변경사항을 구체적으로 보여준다.
git diff
작업 | Vi 명령어 | 상세 |
위로 스크롤 | k | git log등에서 내역이 길 때 사용 |
아래로 스크롤 | j | git log등에서 내역이 길 때 사용 |
끄기 | :q | :가 입력되어 있으므로 q만 눌러도 됨 |
커밋하는 방법(타임캡슐 묻는 방법)
git add . // git add 파일명

git commit -m "Replace Lions with Leopards"

git log


*add와 commit을 한 번에 하려면?*
git commit -am "(메시지)"
단, 새로 추가된(untracked) 파일이 없을 때만 가능하다.
3. 실습(세 개의 커밋들을 추가하기)
1. 첫 번째 추가 커밋
커밋 메시지: Add George to Tiger
Tigers의 members에 George 추가

2. 두 번째 추가 커밋
커밋 메시지: Add team Cheetas
cheetas.yaml 파일 추가

3. 세 번째 추가 커밋
커밋 메시지: Replace Cheetas with Panthers
cheetas.yaml 삭제
Leopards의 manager를 Nora로 수정
panthers.yaml 추가


4. Git에서 과거(Commit 전)로 돌아가는 두 방식
reset | revert |
원하는 시점으로 돌아간 뒤 이후 내역들을 지운다. | 되돌리기 원하는 시점의 커밋을 거꾸로 실행한다. (변경사항 하나하나 다 기록으로 남길 필요가 있을 때 revert를 실행) |

만약 다른 내역은 모두 그대로 유지하되 Replace Lions with Leopards에서만 실행했던 내용만 취소해야 하는 경우에 revert 방식을 사용해야 한다.

4-1. 실습 전 내역 백업
.git 폴더를 복사해두기 (git&github_backup 폴더를 생성)
.git 폴더 없앤 다음 git 상태 확인해보기


4-2. Reset을 사용하기
git log 되돌아갈 시점: Add team Cheetas의 커밋 해시를 복사
git log // :q로 빠져나가기

git reset –hard (돌아갈 커밋 해시)
git reset –hard


cheetas.yaml파일이 다시 생성되었고
Leopards의 manager가 Nora에서 다시 Luke로
panthers.yaml 파일이 삭제되었다.
-> Add team Cheetas 상태로 다시 돌아왔다.

*FIRST COMMIT으로 돌아가기*


*reset 하기 전 시점으로 복원해보기*
기존 .git 폴더에 있는 것은 FIRST COMMIT 밖에 남지 않았기 때문에 기존 .git 폴더를 삭제하고 백업해둔 .git 폴더를 복원하고 git log, git status로 상태를 확인한다.


아래 명령어로 현 커밋 상태로 초기화(제일 마지막)한다. (뒤에 커밋 해시가 없으면 마지막 커밋을 가리킨다.)
git reset –hard


맨 마지막 커밋했을 때로 파일이 돌아온 것을 확인할 수 있다.
lions.yaml 파일 삭제한다.
그럼 다시 완벽하게 마지막 커밋했을 때로 돌아온 것을 확인할 수 있다.

4-3. Revert를 사용하기
1. Add George to Tigers의 커밋 해시 구하기 (git log나 소스트리)

아래 명령어로 revert
git revert (되돌릴 커밋 해시)

:wq로 커밋 메시지 저장


소스트리에서 tigers.yaml 파일에서 멤버로 추가했던 George가 삭제됐다는 것을 알 수 있다. 즉 Add George to Tigers를 반대로 실행하는 커밋하나가 새로 생겼다.
협업할 때는 reset이 아닌 revert 사용하는 게 좋다!
2. Replace Lions with Leopards의 커밋 되돌려보기
이후 leopards.yaml 수정한 내역 때문에 충돌

git rm leopards.yaml로 Git에서 해당 파일 삭제
git rm 파일명

git revert- -continue로 마무리
git revert --continue

:wq로 커밋 메시지 저장

3. reset을 사용해서 revert전으로 되돌아가기
git reset --hard 제일 마지막에 커밋했던 해시

4. 커밋해버리지 않고 revert 하기
Add George to Tigers로 커밋하지 않고 revert만 하기
git revert --no-commit (되돌릴 커밋 해시)
git revert --no-commit (되돌릴 커밋 해시)


원하는 다른 작업을 추가한 다음 함께 커밋한다.(여기서는 생략)
취소하려면 git reset --hard -> 제일 마지막 커밋했던 곳으로 돌아간다.(Replace Cheetas with Panthers)
4-4. SourceTree로 사용해보기
1. 변경사항 만들고 커밋하기
leopards.yaml 삭제
.gitigonre에 *.config 추가
hello.txt 추가

모두 스테이지에 올리기를 누르면

그다음 커밋 메시지를 적으면서 커밋을 해준다.
커밋 메시지: Commit with SourceTree


2. revert 사용하기
Add George to Tigers의 수정사항 되돌려보기
해당 커밋에 마우스 우클릭 – 커밋 되돌리기


3. reset 사용하기
Replace Cheetas with Panthers 시점으로 되돌려보기
해당 커밋에 마우스 우클릭 - 이 커밋으로 초기화

선택지에서 Hard 선택

'Github' 카테고리의 다른 글
6. HEAD / fetch와 pull (0) | 2022.03.31 |
---|---|
5. Git의 3가지 분류 공간과 삭제와 이동 / RESET (0) | 2022.03.31 |
4. GitHub 사용하기: push와 pull / 원격저장소와 로컬저장소 (0) | 2022.03.30 |
3. 여러 branch를 생성하고 사용해보기(merge와 rebase) (0) | 2022.03.29 |
1. Git 설치와 환경설정(CLI와 GUI란?)과 Git설정(프로젝트관리) (0) | 2022.03.28 |