본문 바로가기
Github

2. 프로젝트 변경사항(add, commit, reset, revert)

by 이쟝 2022. 3. 28.
본 포스팅은 얄팍한 코딩사전님의 제대로 파는 Git&GitHub의 유튜브영상을 학습하고 정리한 내용입니다.

 

1. 프로젝트의 변경사항을 버전으로 저장하기(타임캡슐에 담기)

변경사항 확인

git status

추적하지 않는(untracked) 파일: Git의 관리에 들어간 적 없는 파일

 

파일 하나 담기

git add 파일명

 

모든 파일 담기

git add .

담은 파일을 커밋하기

깃에서 무언가를 commit 한다 -> 새로운 버전으로 만든다.

git commit

커밋을 하면 이렇게 Vi 입력 모드로 진입한다.

 

작업 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를 입력한다.

 

sourceTree에서 보기 쉽다.
git log 로  commit 의 일련번호를 알 수 있다 . FIRST COMMIT 이라는 첫 번째 버전이 저장되었음을 알 수 있다 .

git commit -m "FIRST COMMIT" : 이렇게 커밋 메시지로 더 간단하게 작성할 수 있다.


2. 프로젝트의 변경사항을 만들고 commit 하기(타임캡슐에 묻기)

1. lions.yaml 파일 삭제

2. tigers.yamlmanagerDonald로 변경한뒤 leopards.yaml 파일 추가

lions.yaml 파일이 삭제되고, tigers.yaml 파일이 변경되고 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

소스트리로도 2개의 버전이 만들어진 것을 확인할 수 있다.

*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 상태 확인해보기

 

백업해놨던 .git을 다시 복사하면 커밋한 것을 다시 볼 수 있다.

4-2. Reset을 사용하기

git log  되돌아갈 시점: Add team Cheetas의 커밋 해시를 복사

git log // :q로 빠져나가기

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

git reset –hard

앞에 6글자만 복사해도 상관없다.

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

 

*FIRST COMMIT으로 돌아가기*

git reset --hard  first commit의 커밋해시
소스트리 이외에도 git log로도 확인가능하다.

*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 으로 add/rm을 한다음에 git revert –continue를 해라~

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 추가

 

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

스테이지에 올라가게 된다. (git add를 하는 과정)

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

커밋 메시지: Commit with SourceTree

2. revert 사용하기

Add George to Tigers의 수정사항 되돌려보기

해당 커밋에 마우스 우클릭 커밋 되돌리기

 

 

추가됐던 George가 Revert를 해서 사라졌다.

3. reset 사용하기

Replace Cheetas with Panthers 시점으로 되돌려보기

해당 커밋에 마우스 우클릭 - 이 커밋으로 초기화

 

선택지에서 Hard 선택

 

즉 git reset –-hard와 한 것과 결과는 똑같다!

 


https://www.yalco.kr/lectures/git-github/