![Git - 단계적이지 않은 변경사항이 있는 단계적 파일 찾기](https://linux55.com/image/204571/Git%20-%20%EB%8B%A8%EA%B3%84%EC%A0%81%EC%9D%B4%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EB%B3%80%EA%B2%BD%EC%82%AC%ED%95%AD%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EB%8B%A8%EA%B3%84%EC%A0%81%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0.png)
스테이지된 파일에 스테이지되지 않은 변경 사항이 있는지 감지하고 이를 커밋 전 후크에 추가하고 싶습니다.
예를 들어, 출력이 다음과 같을 때 README.md에 미단계 변경 사항이 있음을 감지할 수 있어야 합니다.
❯ git status
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: README.md
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
modified: foo.txt
내가 찾을 수 있는 가장 좋은 해결책은 준비된 파일과 준비되지 않은 파일 목록을 파일에 작성한 다음 사용하는 것입니다.comm
git diff --name-only > /tmp/unstaged.txt
git diff --name-only --staged > /tmp/staged.txt
comm /tmp/unstaged.txt /tmp/staged.txt
답변1
M
짧은 상태를 사용하는 경우 스테이징 콘텐츠는 첫 번째 열에 표시되고 , 스테이징되지 않은 콘텐츠는 M
두 번째 열에 표시됩니다. 따라서 단계적 및 비단계적 변경 사항이 있는 파일은 다음을 통해 감지할 수 있습니다.
git status -s | awk '/MM / { print $2 }'