상현
개발 덕후

git에서 변경된 파일만 추출하기

( 업데이트: )

작업의 패치 버전을 만들면서 변경된 파일들만 추출할 수 있다면 배포할때 좀 더 수월 하지 않을까 생각했다.

바로 이전 commit과 현재 최신 파일 기준으로 변경된 파일 추출하기

git에서 HEAD는 가장 최신 상태를 지칭한다 . 아래 처럼 HEAD 이전 commit 이후 변경된 파일을 추출할 수 있다.

git archive -o test.zip HEAD $(git diff --name-only HEAD^)Code language: JavaScript (javascript)

HEAD^는 HEAD 바로 이전 commit을 가르킨다. 위 커맨드를 실행하면 변경된 파일만 test.zip 파일로 압축된다.

특정 버전(tag)간 변경된 파일 추출하기

tag를 이용해 버전을 관리하는 경우 이 tag를 이용해서 특정 버전 간의 변경된 파일 추출이 가능하. 아래 커맨드를 실행하면 prev 버전과 next 버전 사이의 변경된 파일만 추출이 가능하다.

git archive -o next.zip HEAD $(git diff --name-only prev..next)Code language: JavaScript (javascript)

활용

나는 프로젝트에서 .gitignore되어있는 미디어 폴더에서 주로 사용한다 asset으로서만 사용하기 때문에 버전관리에 포함되지 않는다.

미디어 폴더를 git으로 버전관리를하고 릴리즈 버전때마다 커밋을 남겨서 해당 에셋 파일의 두 커밋간의 변경사항의 미디어 파일만 .zip으로 만들어서 릴리즈에 포함시켜준다.

릴리즈를 github action으로 설정해서 해당 에셋 .zip 파일을 라이브 서버에 배포되도록 설정했다.

해당 활용의 github action 포스팅은 따로 작성했으니 참고해도 좋을 것같다.

Github action ci/cd | 개발자 상현에 하루하루


참고