파일 커밋 및 기록 보기

완료됨

Git 리포지토리를 초기화했으므로, 이제 파일을 추가할 준비가 되었습니다. 이 단원에서는 리포지토리에 있는 파일의 변경 내용을 추적하도록 Git에 지시하는 방법을 알아봅니다.

참고

이 단원의 명령은 개념을 설명하기 위해 표시된 것입니다. 명령을 아직 실행하지 마세요. 여기에서 학습하는 내용을 곧 연습할 예정입니다.

리포지토리의 폴더 구조

Git와 같은 버전 제어 시스템을 사용할 때 파일을 어떻게 저장할 것인지 계획을 세워야 합니다. 폴더 구조를 명확하게 하는 것이 좋습니다.

애플리케이션 또는 다른 솔루션을 배포하는 Bicep 코드를 작성하는 경우에는 애플리케이션 코드 및 기타 파일과 동일한 리포지토리에 Bicep 파일을 저장하는 것이 좋습니다. 이렇게 하면 누군가가 Bicep 및 애플리케이션 코드를 모두 변경하는 새 기능을 추가해야 할 때마다 둘 다 함께 추적됩니다.

또한 폴더 구조를 계획하면 파이프라인에서 솔루션을 쉽게 배포할 수 있습니다. 이러한 파이프라인에 대한 내용은 뒤에 나오는 모듈에서 알아보겠습니다.

팀마다 리포지토리 폴더 및 파일 설정 방법에 대한 규칙이 다릅니다. 팀으로 작업하지 않는 경우에도 따라야 하는 규칙을 결정하는 것이 좋습니다. 좋은 파일 및 폴더 구조는 나중에 이 코드로 작업하는 모든 사용자에게 도움이 됩니다.

아직 팀의 기본 설정이 없는 경우 다음과 같은 구조를 권장합니다.

  • 리포지토리의 루트에 README.md 파일을 만듭니다. Markdown으로 작성된 이 텍스트 파일은 리포지토리의 콘텐츠를 설명하고 팀 구성원이 리포지토리에서 작업하는 데 도움이 되는 지침을 제공합니다.
  • 리포지토리의 루트에 deploy 폴더를 만듭니다. 이 폴더에서 다음을 수행합니다.
    • 기본 Bicep 템플릿(main.bicep)을 저장합니다.
    • Bicep 모듈을 저장할 modules 하위 폴더를 만듭니다.
    • 배포 중에 사용되는 다른 스크립트나 파일이 있는 경우 deploy 폴더에 저장합니다.
  • 리포지토리의 루트에서 소스 코드를 위한 src 폴더를 만듭니다. 이 폴더는 애플리케이션 코드를 저장하는 데 사용됩니다.
  • 리포지토리의 루트에 docs 폴더를 만듭니다. 이 폴더는 솔루션에 대한 설명서를 저장하는 데 사용됩니다.

다음은 이 구조에서 장난감 회사의 웹 사이트를 찾는 방법을 보여주는 일러스트레이션입니다.

Diagram that illustrates a folder hierarchy.

변경 내용 스테이징

파일을 변경한 후에는 파일을 스테이징해야 합니다. 중요한 변경 내용이므로 유지해야 한다고 Git에 지시하는 것을 스테이징이라고 합니다. 스테이징은 불필요한 단계처럼 보일 수 있긴 하나 작업할 때 많은 유연성을 제공합니다. 예를 들어 여러 파일을 변경했지만 그 중 하나만 유지하려는 경우가 있습니다. 또는 특정 파일에 대해 변경한 내용 중 일부만 유지하려는 경우가 있습니다.

파일을 스테이징하려면 git add 명령을 사용하고, 스테이징하려는 파일 이름 또는 폴더 이름을 지정합니다. 파일을 스테이징하면 사용자가 변경 내용을 커밋하려 할 수 있다는 사실을 Git이 알게 됩니다. git status 명령을 사용하여 리포지토리 상태를 쿼리하면 스테이징된 변경 내용이 표시됩니다.

중요

파일을 스테이징한 후, 파일을 커밋하기 전에 추가로 변경하면 Git이 해당 변경 내용을 기록하지 않습니다. Git이 최신 변경 내용을 포함하도록 하려면 파일을 다시 한번 스테이징해야 합니다.

예를 들어, Azure Cosmos DB 계정을 정의하는 Bicep 모듈을 만들었다고 가정해 보겠습니다. 이름은 cosmos-db.bicep이고, deploy/modules 폴더에 저장했습니다. 이 경우 다음과 같이 파일을 스테이징할 수 있습니다.

git add deploy/modules/cosmos-db.bicep

리포지토리의 루트 폴더에서 다음 명령을 실행하여 리포지토리의 모든 변경 내용을 스테이징할 수도 있습니다.

git add .

스테이징된 변경 내용 커밋

커밋은 리포지토리에 있는 하나 이상의 파일에 대한 변경 내용 세트를 나타냅니다. 스테이징한 변경 내용을 커밋할 준비가 되면 git commit 명령을 사용합니다. 커밋에는 사람이 읽을 수 있는 변경 내용에 대한 설명인 커밋 메시지가 포함됩니다.

다음은 앞에서 표시한 스테이징된 변경 내용을 커밋하는 방법을 보여주는 예제입니다.

git commit --message "Add Cosmos DB account definition"

참고

Visual Studio Code는 Git 리포지토리에도 커밋할 수 있습니다. Visual Studio Code에서 Git 통합을 사용하는데, 파일을 아직 스테이징하지 않은 경우 Visual Studio Code는 변경된 모든 파일을 스테이징할 것인지 묻습니다. 이것을 기본 동작으로 설정할 수도 있습니다. 또는 원한다면 Visual Studio Code에서 소스 제어를 사용하여 파일을 수동으로 스테이징 및 스테이징 취소할 수 있습니다.

커밋 메시지는 짧으면서도 구체적인 것이 좋습니다. 사용자 또는 팀원이 나중에 커밋 기록을 검토할 때 각 커밋 메시지를 보고 무엇이, 왜 변경되었는지 알 수 있어야 합니다.

커밋 메시지에 포함되어야 하는 내용 또는 커밋 메시지의 형식에 대한 규칙은 없습니다. 하지만 코드베이스에 명령을 내릴 때처럼 현재 시제의 완전한 문장으로 작성하는 것이 일반적입니다.

혼자 일하는 경우에도 구체적인 커밋 메시지를 작성하는 것이 좋습니다. 나중에 다른 사람이 코드를 확인할 일이 생길 수도 있습니다. 아니면 본인의 기록을 본인이 검토해야 하는 경우가 생길 수 있으므로 구체적으로 작성하는 것이 좋습니다.

다음은 좋은 커밋 메시지의 예입니다.

  • App Service 구성을 업데이트하여 네트워크 구성을 추가합니다.
  • 스토리지 계정이 Cosmos DB 데이터베이스로 대체되었으므로 스토리지 계정을 제거합니다.
  • Application Insights 리소스 정의를 추가하고 함수 앱과 통합합니다.

파일 기록 보기

Git 리포지토리에 파일을 커밋한 후에는 git log CLI 명령을 사용하여 파일 기록 또는 리포지토리에 대한 모든 커밋을 볼 수 있습니다.

커밋 목록을 보려면 다음 명령을 실행합니다.

git log --pretty=oneline

이 명령의 출력에는 커밋 목록이 표시되며, 가장 최근 커밋이 맨 처음에 표시됩니다. 각 줄에는 Git에서 내부적으로 각 커밋을 추적하는 데 사용되는 식별자인 커밋 해시가 포함됩니다. 커밋 메시지도 포함되며, 이러한 이유로 좋은 커밋 메시지를 작성해야 합니다.

보통은 특정 파일에 대한 커밋만 봅니다. 다음과 같이 git log 명령을 실행할 때 파일 이름을 지정할 수 있습니다.

git log deploy/main.bicep

Git CLI 및 git log 명령은 커밋 및 파일에 대한 정보를 보는 데 사용할 수 있는 여러 인수를 제공합니다. 그러나 Visual Studio Code를 사용하여 파일의 커밋 기록을 보는 것이 더 쉬운 경우도 많습니다.

Visual Studio Code 탐색기 창에서 리포지토리의 파일을 길게 누른(또는 마우스 오른쪽 단추로 클릭) 다음, 타임라인 보기를 선택하면 됩니다. 그러면 타임라인 창이 열리고, 해당 파일에 영향을 주는 각 커밋의 목록이 표시됩니다. 커밋을 선택하면 파일의 정확한 변경 내용이 표시됩니다. 이 정보를 사용하는 방법은 다음 연습에서 알아보겠습니다.