Skip to content

CHICPRO

  • Life Log
  • Cycling Log
  • Photo Log
    • Portrait
    • Landscape
    • Flower
    • Etc
  • Coding Log
  • Information

git에서 특정 파일만 추출하기

2015-01-21 by 편리

언제나 시작은 사소한 것에서 비롯된다. 이 코멘트를 보고 이전부터 한번 해봐야지 생각했던 것을 심신이 지친 지금 시도를 해보고야 말았다. 스킨 같은 거 만들고 나면 압축을 해야 하는데 리눅스에서는 tar 를 사용하면 간편하지만 zip 형식으로는 압축이 안돼서 혹시 git 로는 특정 파일, 디렉토리만 zip 으로 압축해서 추출하는 방법이 없을까 고심을 했다. git archive 명령어를 알게 됐기 때문에 방법을 찾아야만 했다. 그리고 역시 방법은 간단했다. 조금만 생각을 바꾸면 되는데.. 그게 귀찮아서 시도조차 해보지 않았다니.. ㅎㅎ

Git-Logo-2Color

http://git-scm.com/docs/git-archive 의 내용을 보면 옵션으로 path 를 지정하면 특정 파일, 디렉토리만 압축이 가능하다. 아래와 같은 형식의 명령을 실행하면 된다.

$ git archive -o test.tar.gz HEAD ./head.php ./tail.php

근데 이 방법은 파일의 개수가 적다면 가장 쉬운 방법일 것이다. 만약 매번 똑같은 파일을 압축해서 추출하거나 파일, 디렉토리 등이 다수 일 때는 불편한 방법일 것이다. 그래서 조금 더 생각을 해봤다. 그리고 이전에 작성했던 git에서 변경된 파일만 추출하기 포스트에서 힌트를 얻었다. 바로 아래의 명령이다.

git archive -o test.zip HEAD $(git diff --name-only HEAD^)

내가 주목한 부분은 $(git diff –name-only HEAD^) 이다. git diff 출력이 아래와 같은 형식인 점에 착안했다.

adm/shop_admin/categoryform.php
adm/shop_admin/categoryformupdate.php
adm/shop_admin/categorylist.php
adm/shop_admin/categorylistupdate.php
adm/shop_admin/itemqaform.php
adm/shop_admin/itemqaformupdate.php
adm/shop_admin/itemqalist.php
adm/shop_admin/itemtypelist.php
adm/shop_admin/itemuseform.php
adm/shop_admin/itemuseformupdate.php
adm/shop_admin/itemuselist.php
adm/shop_admin/wishlist.php
bbs/db_table.optimize.php
bbs/register_form_update.php
bbs/scrap_popin.php
lib/shop.lib.php
plugin/kcpcert/lib/ct_cli_lib.php
shop/_common.php
shop/cartupdate.php

그렇다면 $(git diff –name-only HEAD^) 부분을 대체해서 위와 같은 형식으로 파일 리스트를 전달해주면 되겠구나 생각을 하고 filelist 라는 파일을 하나 생성한 후 이 파일에 아래와 같이 파일과 디렉토리를 기록했다. filelist 라는 이름은 생각나는대로 적은 것이다. 파일은 Enter 키로 구분해서 기록했다.

head.php
tail.php
shop/item.php
extend/

그런 다음에 filelist 에 기록된 내용을 git archive 명령 실행 때 전달해 주기 위해 cat 명령을 사용했다. 그래서 최종적으로 아래와 같이 실행해주니 filelist 에 기록된 파일과 디렉토리만 압축이 됐다. 성공이다. ㅎㅎ

$ git archive -o test.zip HEAD $(cat filelist)

이젠 스킨 파일 만들고 zip 으로 압축하기 위해 ftp 로 다운로드 하고 압축하는 삽질을 이젠 안해도 된다.

Post navigation

Previous Post:

기본 기능에 충실한 무료 마인드맵 프로그램 Blumind

Next Post:

오래 기다렸다 이 느낌이 다시 돌아오기를

4 Commments

  1. 지운아빠 says:
    2015-01-22 at 14:36

    헐 대박 팁입니다. ^^b
    지금 홈페이지 시스템 고치는 중인데, 완료되는 데로 바로 적용해봐야겠네요. 짱짱맨!!!

    Reply
    1. 편리 says:
      2015-01-22 at 21:45

      어제 물어본 것 보고 해본 건데.. 원하던 거였나 보네요.. ㅎㅎ

      Reply
      1. 지운아빠 says:
        2015-01-25 at 21:49

        방금 테스트해봤는데… 초대박 울트라캡숑짱입니다. ㅠㅠ
        사랑해요♥ㅎㅎㅎ

        Reply
        1. 편리 says:
          2015-01-25 at 22:04

          뭘 하시길래.. 이런 팁이 도움이 됐는지가 더 궁금하네요.. ㅎㅎ

          Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent Posts

  • php 배열 연산에서 + 와 array_merge 의 차이
  • pcntl_fork 를 이용한 다중 프로세스 실행
  • 아이폰 단축어를 이용하여 주중 공휴일엔 알람 울리지 않게 하기
  • 구글 캘린더 전체일정 재동기화
  • OpenLiteSpeed 웹서버에 HTTP 인증 적용
  • OpenLiteSpeed 웹어드민 도메인 연결
  • WireGuard를 이용한 VPN 환경 구축
  • Ubuntu 22.04 서버에 OpenLiteSpeed 웹서버 세팅
  • 맥 vim 세팅
  • 우분투 시스템 터미널쉘 zsh 로 변경

Recent Comments

  • 편리 on 업무관리용 그누보드 게시판 스킨
  • 임종섭 on 업무관리용 그누보드 게시판 스킨
  • 캐논 5D 펌웨어 | Dslr 펌웨어 업그레이드 방법 82 개의 베스트 답변 on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • Top 5 캐논 5D 펌웨어 Top 89 Best Answers on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • 편리 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 임팀장 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 편리 on Notepad++ NppFTP 플러그인 수동 설치
  • paul-j on Notepad++ NppFTP 플러그인 수동 설치
  • YS on Windows 10 iCloud 사진 저장 폴더 변경
  • 편리 on Docker를 이용한 Centos7 + httpd + php 5.4 개발환경 구축

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
© 2025 CHICPRO | Built using WordPress and SuperbThemes