Git 을 활용하여 과거 데이터 가져오기.

2025. 10. 10. 23:03·git&github

저번 포스팅에 이어 Git 을 사용하여 변경사항을 추적하고 버전으로 기록하는 과정을 다뤄보려고 한다.

이를 통해서 변경 내역을 버전으로 남기고, 잘못된 커밋을 되돌리는 방법까지 알아볼 수 있다.

1. git add + commit 

git status 를 입력했을 때 나온 결과를 보면 "no commits yet" 은 아직 commit 이 없다는 뜻이고

"Untracked files" 는 아직 Git이 관리한 적 없는 파일이라는 의미이다.

 

여기에서 Commit 을 버전이라고도 볼 수 있는데 이번에는 이 commit 을 추가하는 방법을 알아보려 한다.

 

먼저 "git add + 파일명" 을 입력하면 해당 파일을 commit 목록에 담는다는 의미이고,

"git add . " 를 입력하면 현재 접근한 폴더 하위의 모든 파일을 commit 목록에 담는다는 뜻이다.

 

그래서 아래처럼 gti add 파일명을 입력했을 때, 해당 파일명 우측에 상태가 ADD 상태로 변경되고

git status 내에서도 Changes to be committed 에 해당 파일이 추가되는 것을 볼 수 있다.

 

 

이후 git  commit 을 입력하면 아래와 같이 vim editor 으로 입력하는데 여기서

commit 이름을 입력하고 저장하면 commit 으로 입력할 수 있다.

 

vim editor 로 들어가지 않고 바로 commit 하길 윈한다면 git commit -m "commit 내용" 을 입력하면 된다.

 

git log 를 입력하여 커밋 히스토리를 확인하면 commit hash 와 commit message를 확인할 수 있다.

 

더 나아가 git diff 를 사용하여 작업 디렉터리와 스테이지 영역 사이 혹은 두 커밋 또는 브랜치 간의 차이를 볼 수 있다.

 

예를 들어 아래와 같이 변경사항, 삭제된 사항, 추가된 사항이 있는 케이스에서 git diff 를 사용하면

아래와 같이 test2.py 는 삭제되었으며, test1.py 는 내용이 변경되었다고 노출된다.

 

마지막으로 git add 와 git commit 을 한번에 할 수 있는 명령어는 `git commit -am "메시지"` 이다.

다만 위 경우, tracked 파일에 한해서만 진행되기 때문에 새로 추가되거나

untracked file 이 있는 경우에는, 반드시 git add 와 commit 을 분리해서 작성해야 한다.

 

2. git reset + revert

그렇다면 이렇게 git commit 을 한 뒤에 이전 상태로 돌릴 수 있는 방법은 무엇일까?

 

이 방법은 크게 두가지로 나뉘는데 하나는 Reset, 하나는 Revert 이다.

 

Reset 은 시간을 과거로 돌린 뒤 이후에 했던 행동들을 전체 삭제하는 것을 의미하고

Revert 는 시간을 과거로 돌리는 행동을 새로운 Commit 으로 추가하는 것이라고 볼 수 있다.

 

여기서 유의해야할 점은, Reset 은 이후 시점을 지워버리기 때문에 협업할 때에는 지양하는 것이 좋다.

 

Git reset 과 git revert 를 사용하기 전에, git log를 사용하여 커밋 해시를 확인한다.

 

그다음에 git reset --hard "commit hash" 를 입력하면 파일의 생성, 변경, 삭제 모든것들이 원래대로 돌아간다.

 

그리고 sourcetree 를 확인해보면, Replace ~ 로 입록했던 기존의 commit 이 사라졌다.

 

git revert 는 git revert "commit hash" 를 사용하는데, 예를 들어 "Add 1 to test 1" 으로 revert 를 진행한다면

reset 과 달리 기존에 있던 commit 내역은 사라지지 않고 위에 추가로 commit 이 생성된다

 

여기서 추가적으로 커밋을 추가하지 않고 revert 를 실행하고 싶은 경우에는,

git revert --no-commit "되돌릿 커밋 해시" 를 입력하면 위처럼 커밋이 추가되지 않는다.

 

또한 git revert 로 되돌리려는 커밋 이후의 코드가 이미 변경되었거나 유사 변경이 중복된 경우

해당 변경 내용을 반대로 적용하기 어려울 때 충돌이 발생하는 경우가 있는데,

이런 경우에는 아래와 같이 CONFLICT 에러가 발생하며 어떻게 할 지 결정해 줘야 한다.

 

삭제하지 않고 수정된 파일을 스테이지에 올리는 방법은 git add test1.py

삭제하고 수정된 파일을 스테이지에 올리는 방법은 git rm test1.py 를 실행시킨 뒤에

git revert --continue 를 입력하여 revert commit 을 만들어달라는 명령을 전송시키면 된다.

 

여러 커밋을 한번에 되돌릴 때, git revert --skip 을 통해 충돌나는 커밋만 무시하고 진행할 수 있고

git revert --abort 를 통해 이번 revert 시도 자체를 완전히 취소하는 방법도 있다.

3. SourceTree 사용하기

먼저 SourceTree 로 add + commit 하는 방법과 revert, reset 을 진행해 볼 예정이다.

 

먼저 수정된 내용이 있는 상태로 좌측 상단 커밋 버튼을 누르고 커밋 메시지 입력한 뒤 커밋을 누르면

add + commit 을 진행할 수 있다. 위 내용은 terminal 에서 git log 를 통해 확인 가능하다.

 

두번째로 git reset 과 git revert 는 원하는 commit 을 우클릭 한 뒤에

이 커밋까지 현재 브랜치를 초기화 버튼을 누르면 reset 이고, 커밋 되돌리기는 revert 이다.

여기까지 git add 와 git commit 을 진행해봤는데, 다음 포스팅에는 branch 를 다뤄보려고 한다.

'git&github' 카테고리의 다른 글

Git 문서 활용 및 각종 설정 진행하기  (0) 2025.10.21
Git의 강점과 특징  (0) 2025.10.19
Github 사용하기  (0) 2025.10.14
Git branch 넘나들기  (0) 2025.10.11
Git 시작하고 기본 설정하기  (0) 2025.10.08
'git&github' 카테고리의 다른 글
  • Git의 강점과 특징
  • Github 사용하기
  • Git branch 넘나들기
  • Git 시작하고 기본 설정하기
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (195)
      • python (30)
        • python_selenium (16)
        • python_pygame (3)
      • appium (0)
      • 쿠버네티스 (60)
        • linux (8)
        • shell programming (8)
        • docker (18)
        • cka (23)
      • postman&API (16)
      • QA성장하기 (33)
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
        • 제4회 QA conference (3)
      • 에러일기 (1)
      • Server&load (35)
        • AWS (27)
        • load test (5)
        • CI CD (3)
        • Jmeter (0)
      • RAG 을 활용하여 LLM 만들어보기 (12)
      • git&github (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    QAKOREA
    쿠버네티스
    개발자에서아키텍트로
    도커
    스터디
    사드웨어리소스
    테스트 결과보고서
    테스트스크립트
    qa conference
    qa
    앱공존성
    로스트아크
    애플리케이션로그
    .cpu
    공존성테스트
    k8s
    API
    application log
    포스트맨
    리눅스
    LOSTARK
    vi에디터
    python
    linux
    cka
    e2c
    네트워크 테스트
    로스트아크api
    qa 컨퍼런스
    postman
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
Git 을 활용하여 과거 데이터 가져오기.
상단으로

티스토리툴바