동시 Git 작업 테스트
이전 단계에서 .git/index.lock 파일이 있으면 git status와 같은 Git 명령이 실행되지 않음을 확인했습니다. 이 잠금 파일은 여러 Git 작업이 동시에 인덱스를 수정하려고 시도할 수 있는 경우 문제를 방지하는 데 중요합니다.
Git 작업이 진행 중이고 잠금 파일을 생성하는 시나리오를 시뮬레이션해 보겠습니다. 이 간단한 랩 설정에서는 두 개의 Git 명령을 정확히 같은 마이크로초에 실행할 수는 없지만, 개념을 이해할 수 있습니다. 복잡한 rebase 또는 대규모 커밋과 같이 오래 실행되는 Git 명령을 실행하다가 중단되었다고 상상해 보십시오. 그러면 잠금 파일이 남게 됩니다.
이전 단계에서 이미 .git/index.lock 파일이 있으므로 다른 Git 작업 (예: 파일 추가) 을 수행해 보겠습니다. 먼저 새 파일을 만듭니다.
echo "This is another file." > another_file.txt
이제 이 파일을 스테이징 영역에 추가해 보겠습니다.
git add another_file.txt
fatal: Unable to create ... .git/index.lock: File exists. 오류 메시지가 표시될 것입니다. 이는 잠금 파일이 있는 한 인덱스와 상호 작용하는 대부분의 Git 명령이 차단됨을 확인합니다.
다른 Git 프로세스가 실행 중이지 않다고 확신하는 경우 이 문제를 해결하려면 .git/index.lock 파일을 수동으로 제거해야 합니다. rm 명령을 사용하여 파일을 삭제합니다.
rm .git/index.lock
이제 잠금 파일이 제거되었으므로 git add 명령을 다시 시도해 보겠습니다.
git add another_file.txt
이번에는 잠금 오류 없이 명령이 실행되어야 합니다. git status를 실행하여 확인할 수 있습니다.
git status
"Changes to be committed" 아래에 another_file.txt가 나열되어 스테이징 영역에 성공적으로 추가되었음을 나타냅니다.
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: another_file.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
message.txt
참고: 이전 랩에서 아직 커밋하지 않은 경우 message.txt가 추적되지 않은 파일로 나열될 수도 있습니다. 이는 예상되는 동작입니다.
이 연습은 .git/index.lock 파일이 어떻게 안전 장치 역할을 하는지, 그리고 중단으로 인해 남겨진 경우 수동으로 지우는 방법을 보여줍니다. 잠금 파일을 수동으로 제거할 때는 항상 주의하고 다른 Git 프로세스가 활성화되어 있지 않은지 확인하십시오.