Git 커밋 되돌림 여부 확인 방법

GitBeginner
지금 연습하기

소개

이 랩에서는 Git 커밋이 되돌려졌는지 (reverted) 확인하는 방법을 배우게 됩니다. git log 명령을 사용하여 되돌리기 커밋을 찾는 방법을 살펴보고, git show를 활용하여 이러한 되돌리기의 세부 정보를 확인합니다. 마지막으로, 되돌려지지 않은 커밋을 검토하여 히스토리와 내용의 차이점을 이해합니다. 이 실습을 통해 샘플 프로젝트 히스토리를 생성하고, 이후 되돌려지는 커밋을 포함하여 되돌려진 커밋을 식별하고 확인하는 기술을 연습할 수 있습니다.

git log 실행하여 되돌리기 커밋 찾기

이 단계에서는 git log를 사용하여 되돌려진 (reverted) 커밋을 찾는 방법을 배웁니다. 커밋을 되돌린다는 것은 이전 커밋에서 도입된 변경 사항을 실행 취소하는 새로운 커밋을 생성하는 것을 의미합니다. 이는 실수를 했을 때 원래 커밋의 히스토리를 잃지 않고 쉽게 실행 취소하려는 경우에 유용합니다.

먼저, 프로젝트 디렉토리에 있는지 확인합니다. 터미널을 열고 my-time-machine 디렉토리로 이동합니다.

cd ~/project/my-time-machine

이제, 나중에 되돌릴 커밋을 포함하여 프로젝트 히스토리를 시뮬레이션하기 위해 몇 개의 커밋을 생성해 보겠습니다.

첫 번째 파일을 생성합니다.

echo "Initial content" > file1.txt
git add file1.txt
git commit -m "Add file1"

다음과 유사한 출력을 볼 수 있습니다.

[master (root-commit) a1b2c3d] Add file1
 1 file changed, 1 insertion(+)
 create mode 100644 file1.txt

이제, 더 많은 내용을 추가하고 다른 커밋을 만듭니다.

echo "Adding more content" >> file1.txt
git add file1.txt
git commit -m "Add more content to file1"

다음과 유사한 출력을 볼 수 있습니다.

[master 4e5f6g7] Add more content to file1
 1 file changed, 1 insertion(+)

다음으로, 나중에 되돌릴 커밋을 만듭니다.

echo "This commit will be reverted" > file2.txt
git add file2.txt
git commit -m "Add file2 (will be reverted)"

다음과 유사한 출력을 볼 수 있습니다.

[master 8h9i0j1] Add file2 (will be reverted)
 1 file changed, 1 insertion(+)
 create mode 100644 file2.txt

이제 마지막 커밋을 되돌립니다. git revert HEAD를 사용하여 가장 최근의 커밋을 되돌릴 수 있습니다.

git revert HEAD --no-edit

--no-edit 플래그는 Git 에게 편집기를 열지 않고 되돌리기 커밋 메시지를 자동으로 생성하도록 지시합니다. 다음과 유사한 출력을 볼 수 있습니다.

[master k2l3m4n] Revert "Add file2 (will be reverted)"
 1 file changed, 1 deletion(-)
 delete mode 100644 file2.txt

훌륭합니다! 이제 "Add file2 (will be reverted)" 커밋의 변경 사항을 되돌리는 커밋을 생성했습니다.

이제 git log를 사용하여 커밋 히스토리를 보고 되돌리기 커밋을 찾습니다.

git log --oneline

다음과 유사한 출력을 볼 수 있습니다.

k2l3m4n (HEAD -> master) Revert "Add file2 (will be reverted)"
8h9i0j1 Add file2 (will be reverted)
4e5f6g7 Add more content to file1
a1b2c3d Add file1

"Revert 'Add file2 (will be reverted)'" 커밋 메시지를 확인하십시오. 이는 이 커밋이 이전 커밋의 되돌리기임을 명확하게 나타냅니다. --oneline 플래그와 함께 git log를 사용하면 커밋 히스토리의 요약을 빠르게 확인하고 메시지를 통해 되돌리기 커밋을 식별할 수 있습니다.

git show 를 사용하여 되돌리기 확인

이 단계에서는 git show 명령을 사용하여 되돌리기 커밋의 세부 정보를 검사하고, 원래 커밋의 변경 사항을 올바르게 실행 취소했는지 확인합니다. git show 명령은 커밋, 태그 및 블롭 (blob) 을 포함한 Git 객체를 검사하는 강력한 도구입니다.

먼저, ~/project/my-time-machine 디렉토리에 있는지 확인합니다.

cd ~/project/my-time-machine

이제 되돌리기 커밋의 커밋 해시가 필요합니다. 이전 단계에서 git log --oneline의 출력에서 얻을 수 있습니다. 목록에 처음 표시되는 커밋입니다. 예를 들어, git log --oneline의 출력이 다음과 같다고 가정해 보겠습니다.

k2l3m4n (HEAD -> master) Revert "Add file2 (will be reverted)"
8h9i0j1 Add file2 (will be reverted)
4e5f6g7 Add more content to file1
a1b2c3d Add file1

되돌리기 커밋의 커밋 해시는 k2l3m4n입니다. 참고: 커밋 해시는 다를 것입니다.

이제 git show를 사용하고 그 뒤에 되돌리기 커밋의 커밋 해시를 입력합니다. YOUR_REVERT_COMMIT_HASHgit log --oneline 출력의 실제 해시로 바꿉니다.

git show YOUR_REVERT_COMMIT_HASH

예를 들어, 예시 해시 k2l3m4n을 사용합니다.

git show k2l3m4n

다음과 유사한 출력을 볼 수 있습니다.

commit k2l3m4n (HEAD -> master)
Author: Jane Doe <jane.doe@example.com>
Date:   Mon Aug 7 10:05:00 2023 +0000

    Revert "Add file2 (will be reverted)"

    This reverts commit 8h9i0j1.

diff --git a/file2.txt b/file2.txt
deleted file mode 100644
index 8b1a99c..0000000
--- a/file2.txt
+++ /dev/null
@@ -1 +0,0 @@
-This commit will be reverted

이 출력을 분석해 보겠습니다.

  • 첫 번째 부분은 커밋 세부 정보를 보여줍니다: 커밋 해시, 작성자, 날짜 및 커밋 메시지. 메시지가 특정 커밋 (해시로 식별됨) 을 명시적으로 되돌린다고 명시되어 있음을 확인하십시오.
  • diff 섹션은 이 커밋에서 도입된 변경 사항을 보여줍니다. 이 경우 file2.txt가 삭제되었음을 보여줍니다 (deleted file mode 100644). 이는 되돌리기 커밋이 file2.txt의 생성을 성공적으로 실행 취소했음을 확인합니다.

git show를 사용하면 히스토리의 모든 커밋에서 도입된 정확한 변경 사항을 검사할 수 있습니다. 이는 프로젝트의 히스토리를 이해하고 되돌리기 또는 기타 변경 사항이 올바르게 적용되었는지 확인하는 데 매우 유용합니다.

되돌리지 않은 커밋 테스트

이전 단계에서 여러 커밋을 생성한 다음 그 중 하나를 되돌렸습니다. git log를 사용하여 히스토리를 확인하고 git show를 사용하여 되돌리기 커밋을 검사했습니다. 이제, 되돌려지지 않은 커밋이 여전히 존재하고 예상된 변경 사항을 포함하는지 확인해 보겠습니다.

먼저, ~/project/my-time-machine 디렉토리에 있는지 확인합니다.

cd ~/project/my-time-machine

git log --oneline에서 커밋 히스토리를 다시 불러오겠습니다.

k2l3m4n (HEAD -> master) Revert "Add file2 (will be reverted)"
8h9i0j1 Add file2 (will be reverted)
4e5f6g7 Add more content to file1
a1b2c3d Add file1

"Add file1" 및 "Add more content to file1" 커밋은 되돌려지지 않았습니다. git show를 사용하여 "Add more content to file1" 커밋을 검사하고 변경 사항을 확인해 보겠습니다.

git log --oneline 출력에서 "Add more content to file1"의 커밋 해시를 찾습니다. 위의 예에서는 4e5f6g7입니다. 실제 커밋 해시를 사용해야 합니다.

이제 해당 커밋 해시로 git show를 사용합니다.

git show YOUR_MORE_CONTENT_COMMIT_HASH

예를 들어, 예시 해시 4e5f6g7을 사용합니다.

git show 4e5f6g7

다음과 유사한 출력을 볼 수 있습니다.

commit 4e5f6g7
Author: Jane Doe <jane.doe@example.com>
Date:   Mon Aug 7 10:02:00 2023 +0000

    Add more content to file1

diff --git a/file1.txt b/file1.txt
index 8b1a99c..a1b2c3d 100644
--- a/file1.txt
+++ b/file1.txt
@@ -1 +1,2 @@
 Initial content
+Adding more content

이 출력은 커밋의 세부 정보를 보여주며, diff 섹션은 "Adding more content" 줄이 file1.txt에 추가되었음을 명확하게 나타냅니다. 이는 나중에 커밋이 되돌려졌음에도 불구하고 이 커밋과 해당 변경 사항이 여전히 프로젝트 히스토리의 일부임을 확인합니다.

이는 Git 의 핵심 측면을 보여줍니다: 커밋을 되돌리면 변경 사항을 실행 취소하는 새로운 커밋이 생성됩니다. 히스토리에서 원래 커밋을 지우지 않습니다. 이는 모든 변경 사항의 완전한 기록을 유지하여 프로젝트의 전체적인 발전을 이해할 수 있게 해주기 때문에 중요합니다.

마찬가지로, "Add file1" 커밋의 해시 (a1b2c3d 예시) 로 git show를 사용하여 file1.txt의 초기 생성을 확인할 수 있습니다.

git log를 사용하여 히스토리를 확인하고 git show를 사용하여 개별 커밋을 검사함으로써, 커밋이 되돌려진 경우에도 프로젝트의 타임라인을 효과적으로 탐색하고 이해할 수 있습니다.

요약

이 Lab 에서는 Git 저장소에서 되돌려진 커밋을 식별하는 방법을 배웠습니다. 먼저, 되돌리기를 위해 특별히 의도된 커밋을 포함하여 여러 커밋으로 프로젝트 히스토리를 만들었습니다. 그런 다음, git revert HEAD --no-edit 명령을 사용하여 이전 커밋의 변경 사항을 실행 취소하는 새로운 커밋을 생성했습니다. 이 프로세스는 커밋을 되돌리는 것이 원래 커밋을 제거하는 대신 히스토리에 새로운 커밋을 추가하는 방법을 보여주었습니다.

git log를 사용하여 이러한 되돌리기 커밋을 찾고 git show를 사용하여 내용을 확인하고, 되돌려지지 않은 커밋과 구별하는 방법을 계속해서 살펴보겠습니다.