소개
Git 은 개발자가 변경 사항을 추적하고, 협업하며, 코드베이스를 효과적으로 관리하는 데 도움이 되는 강력한 버전 관리 시스템입니다. Git 의 기본적인 기술 중 하나는 프로젝트의 히스토리를 검사하여 어떤 변경 사항이 언제, 누구에 의해 이루어졌는지 확인하는 능력입니다. 이 실습에서는 특정 Git 커밋에 도입된 변경 사항을 보는 방법을 배우게 됩니다. 이는 프로젝트의 진화 과정을 이해하고, 코드를 검토하며, 문제를 해결하는 데 필수적입니다.
커밋 히스토리 탐색
특정 커밋의 변경 사항을 보기 전에 먼저 해당 커밋을 찾아야 합니다. git log 명령은 저장소의 커밋 히스토리를 표시하는 데 사용됩니다. 이 실습을 위해 ~/project/git-demo에 샘플 Git 저장소가 생성되었습니다.
먼저 프로젝트 디렉토리로 이동합니다. 이 실습의 모든 명령은 이 디렉토리 내에서 실행해야 합니다.
cd ~/project/git-demo
이제 --oneline 옵션과 함께 git log 명령을 사용하여 커밋 히스토리의 간결한 보기를 확인합니다. 이렇게 하면 각 커밋의 고유한 커밋 해시와 커밋 메시지가 포함된 모든 커밋 목록이 표시됩니다.
git log --oneline
이와 유사한 출력이 표시될 것입니다. 화면의 커밋 해시는 다르겠지만 메시지는 동일합니다.
a1b2c3d (HEAD -> master) Add application file
e4f5g6h Update README with project description
i7j8k9l Initial commit: Add README.md
각 줄은 커밋을 나타냅니다. 각 줄의 시작 부분에 있는 7 자 문자열 (예: a1b2c3d) 은 커밋 해시의 축약된 버전으로, 커밋을 고유하게 식별합니다. 다음 단계에서 이 해시를 사용하여 특정 커밋을 검사합니다.
특정 커밋의 변경 사항 보기
이제 커밋 목록을 확인했으므로 git show 명령을 사용하여 특정 커밋의 세부 정보와 변경 사항을 볼 수 있습니다. 이 명령은 커밋의 메타데이터 (작성자, 날짜, 메시지) 와 "diff"를 표시하며, 이는 추가되거나 제거된 정확한 줄을 강조 표시합니다.
두 번째 커밋, 즉 "Update README with project description" 메시지를 가진 커밋을 검사해 보겠습니다. 이전 단계의 출력에서 해당 커밋의 해시를 찾으십시오.
해시를 복사하여 git show와 함께 사용합니다. <commit-hash>를 터미널의 실제 해시로 바꾸십시오.
git show <commit-hash>
예를 들어, 해당 커밋의 해시가 e4f5g6h였다면 다음과 같이 실행합니다.
git show e4f5g6h
출력은 다음과 유사하게 표시됩니다.
commit e4f5g6h1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7
Author: LabEx <labex@example.com>
Date: ...
Update README with project description
diff --git a/README.md b/README.md
index ...
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
## My Project
+
+This is a simple project to demonstrate Git.
출력을 자세히 살펴보겠습니다.
- 커밋 메타데이터: 처음 몇 줄은 전체 커밋 해시, 작성자, 날짜 및 커밋 메시지를 보여줍니다.
- Diff 섹션:
diff --git으로 시작하는 부분은 "diff"입니다.--- a/README.md및+++ b/README.md는 파일의 "이전" 및 "이후" 버전을 나타냅니다.+로 시작하는 줄은 이 커밋에서 추가된 줄입니다.-로 시작하는 줄 (이 예시에는 없음) 은 제거된 줄입니다.
커밋에서 특정 파일의 변경 사항 보기
때로는 커밋이 여러 파일을 변경했지만 특정 파일의 변경 사항에만 관심이 있을 수 있습니다. git show 명령에 파일 경로를 추가하여 특정 파일에 대한 변경 사항만 표시하도록 할 수 있습니다.
가장 최근 커밋인 "Add application file" 메시지를 가진 커밋을 살펴보겠습니다. 이 커밋은 app.py 파일을 추가했습니다.
먼저 git log --oneline 출력에서 최신 커밋의 해시를 가져옵니다. 그런 다음 해당 해시와 함께 git show를 실행하고 --와 파일 이름 app.py를 추가합니다.
git show app.py < latest-commit-hash > --
예를 들어, 최신 커밋 해시가 a1b2c3d라면 명령은 다음과 같습니다.
git show a1b2c3d -- app.py
이제 출력은 해당 커밋에서 app.py에 대한 변경 사항으로 제한됩니다.
commit a1b2c3d...
Author: LabEx <labex@example.com>
Date: ...
Add application file
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..d95f32b
--- /dev/null
+++ b/app.py
@@ -0,0 +1 @@
+print("Hello, Git!")
출력이 훨씬 짧아지고 app.py에 대한 diff 만 포함된다는 점에 유의하십시오. new file mode 100644 줄은 이 파일이 이 커밋에서 생성되었음을 나타냅니다.
두 커밋 비교하기
git show는 단일 커밋 내의 변경 사항을 보는 데 사용되는 반면, git diff를 사용하면 두 커밋 사이의 누적 변경 사항을 볼 수 있습니다. 이는 두 시점 간의 모든 변경 사항을 확인하는 데 유용하며, 예를 들어 두 릴리스 간의 변경 사항을 확인할 때 사용됩니다.
프로젝트에서 지금까지 이루어진 모든 변경 사항을 확인하기 위해 첫 번째 커밋 ("Initial commit: Add README.md") 과 마지막 커밋 ("Add application file") 의 커밋 해시를 사용하여 비교해 보겠습니다.
두 해시와 함께 git diff 명령을 사용합니다.
git diff <first-commit-hash> <last-commit-hash>
예를 들어, 첫 번째 커밋 해시가 i7j8k9l이고 마지막 커밋 해시가 a1b2c3d라면 다음과 같습니다.
git diff i7j8k9l a1b2c3d
출력은 이 두 커밋 사이에 발생한 모든 변경 사항에 대한 결합된 diff 를 보여줍니다.
diff --git a/README.md b/README.md
index ...
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
## My Project
+
+This is a simple project to demonstrate Git.
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..d95f32b
--- /dev/null
+++ b/app.py
@@ -0,0 +1 @@
+print("Hello, Git!")
이 출력은 README.md의 업데이트와 app.py의 생성 모두를 보여주어 이 두 시점 간의 프로젝트 진화에 대한 완전한 그림을 제공합니다.
요약
이 실습에서는 Git 저장소의 기록을 탐색하고 변경 사항을 검사하는 방법을 배웠습니다. git log를 사용하여 커밋을 나열하고, git show를 사용하여 단일 커밋 내의 세부 정보 및 변경 사항 (전체 커밋 및 특정 파일 모두) 을 보고, git diff를 사용하여 두 커밋 간의 차이점을 비교하는 연습을 했습니다. 이러한 명령은 코드 변경 사항을 이해하고, 디버깅하며, 모든 Git 기반 프로젝트에서 효과적으로 협업하는 데 필수적입니다.



