reset과 revert

reset과 revert

1. reset

  • reset에 대해 알아봅시다!
  • resetGit에서 변경 내용을 되돌리거나 작업 디렉토리를 이전 커밋 상태로 되돌리는 데 사용되는 명령어입니다.
  • reset을 이용하여, 이전 커밋 상태로 되돌아가봅시다!
  • #1. git log를 입력한 후, Add team Dolphins의 커밋 일련번호를 복사해줍니다. (7글자만 복사하여도 가능합니다.) 

 

  • #2. git reset --hard 일련번호를 입력하여, 되돌립니다.

    → 다음과 같이 Add team Dolphins로 돌아왔다고 나타납니다.

    → 또한, panthers.yaml이 사라진 것을 확인할 수 있습니다.

 

2. revert

  • 이번엔 revert에 대해 알아봅시다!
  • revert이전 커밋을 취소하고, 그 변경 사항을 새로운 커밋으로 기록하는 명령어입니다.
  • reset과는 달리 히스토리를 변경하지 않고 새로운 커밋을 만들어서, 이전 커밋을 취소합니다.
  • 이렇게 함으로써 히스토리가 수정되지 않고, 변경 사항이 롤백되면서 새로운 이력이 생성됩니다.
  • #1. git log를 입력한 후, Add Kim to Tigers 커밋의 일련번호를 찾은 뒤, git revert 일련번호를 입력합니다.

    → 그러면 다음과 같이 나타나게 됩니다.

 

  • #2. :wq를 입력해서 보면, dolphins.yaml은 사라지고 Tigers에 member에서 Kim도 사라진 것을 확인할 수 있습니다.

 

  • #3. 이번엔 Replace Eagles with Bearsrevert해봅시다.

    → 그러면 충돌이 발생합니다. 왜인지 Sourcetree에서 찾아봅시다.

 

  • Replace Dolphins with Panthers에서 수정한 bears.yamlReplace Eagles with Bears에서 추가한 Bears.yaml충돌을 일으키기 때문입니다.

 

  • #4. git rm bear.yaml을 입력하여, 삭제한 후, git revert --continue를 입력해줍니다.

    → :wq로 저장해주면, 정상적으로 돌아왔음을 확인할 수 있습니다.

 

  • git revert --no-commit 일련번호를 입력하면, 돌아오지만 커밋이 되있지 않는 상태로 돌아옵니다.

 

3. SourceTree로 reset과 revert 해보기

  • 이번엔 SourceTree로 진행해봅시다!
  • #1. bears.yaml 파일을 삭제하고 .gitignore 파일에 *.config를 입력하여 추가해줍니다.
  • #2. hello.txt 파일을 생성 후, hello world라고 입력해줍니다.
  • #3. SourceTree에 들어가서 커밋되지 않은 변경사항을 보면, 스테이지에 올라가지 않은 파일이 3개가 있는데 이것들을 스테이지에 올라간 파일 칸에 옮겨줍니다.

 

  • 왼쪽 상단에 커밋 버튼을 누르고 밑에 칸에 Commit with SourceTree를 입력한 후, 커밋을 누르면 정상적으로 커밋이 됩니다.

  • 이번엔 Add Kim to Tigersrevert해봅시다!
  • #1. Add Kim to Tigers에서 오른쪽 마우스를 클릭하고 커밋 되돌리기를 눌러줍니다. 그러면 Add Kim to Tigers로 되돌리게 됩니다.
  • 이번엔 Replace Dolphins with Panthersreset해봅시다!
  • #1. Replace Dolphins with Panthers에서 오른쪽 마우스를 클릭하고 이 커밋까지 련재 브랜치를 초기화 버튼을 클릭합니다.
  • #2. 그 다음 사용 중인 모드Hard로 변경 후, 확인을 누르면 reset이 됩니다. 

 

4. 정리하며

  • 지금까지 resetrevert에 대해 알아보았습니다.
  • 다음 시간엔 브랜치(branch)에 대해 알아보겠습니다.
 

브랜치(branch)

브랜치(branch) 1. 브랜치(branch) 이번엔 브랜치(branch)에 대해서 알아봅시다! 브랜치란? 코드의 분리된 작업 흐름을 나타내는 것입니다. 각 브랜치는 프로젝트의 기능 or 수정을 담당하는 독립적인

newbean-j.tistory.com

 

※ 이 글은 얄팍한 코딩사전 님의 유튜브 강의를 참고하였습니다.

'Back-End Study > Git & GitHub' 카테고리의 다른 글

merge와 rebase  (0) 2024.02.05
브랜치(branch)  (0) 2024.02.05
add와 commit  (0) 2024.02.02
.gitignore  (0) 2024.01.31
SourceTree  (0) 2024.01.30