저번 포스팅에 이어 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 |