본문 바로가기

Trouble Shooting

git 레포지토리에서 변경된 파일들중에서 원하는 파일들만 추리기

git 레포지토리에서 변경된 파일들을 모아서 제출할 필요가 있어서 사용한 명령어이다. 


$ git diff --name-only b847612f65a9d9024d5d943500ea0be502668341 HEAD | grep 'cc\|cpp\|h$' | xargs tar czf changed.tgz


먼저 git 레포지토리에서 변경된 파일만 찾아 파일명들을 출력하는 명령은 다움과 같다

git diff --name-only commit-id  commit-id

commit-id에는 HEAD 와 같은 예약어를 쓸 수 있다. 


두번째 grep문장을 통해 원하는 확장자를 갖는 것들만 추리게 된다. grep의 정규식 규약을 따랐다. '$'는 행의 끝은 의미한다. 정규식의 의미는 cc 혹은 cpp 혹은 h로 끝나는 행(줄)만을  의미한다.


세번째는 xargs 명령어와. tar명령어의 조합이다. xargs는 리다이렉트된 것들을 뒤에 따라오는 명령어 뒤에 덧붙인다. grep에 의해 추려진 파일명들이 tar ... 뒤에 붙게 된다. tar명령어의 옵션 czf = create(새로 만든다) zip(gzip을 이용해 압축한다.) file(압축 혹은 압축을 풀때 대상이 파일임, 뒤에 저장될 파일명이 명시된다)