Skip to content

CHICPRO

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

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

2014-11-07 by 편리

업무상 버전관리를 git를 이용해 하고 있다. 처음 git을 접했을 때만 해도 버전관리라는 개념자체가 없었기 때문에 굉장히 낯설었는데 지금은 이걸 가지고 여러가지를 하고 있다. 다른 레파지토리의 내용을 가져오거나 하는 등의 작업 말이다. 그리고 어제 배포 중인 솔루션의 패치 버전을 만들면서 수정된 파일만 추출할 수 있으면 좋겠다는 생각을 하게 됐고 되지도 않는 영어를 이용해 구글에서 검색을 해보니 정말 운 좋겠도 방법을 찾을 수가 있었다. 이 방법때문에 패치 배포할 때 좀 더 수월해졌고 사용자도 반응이 좋다. ㅎㅎ

참고한 포스트는 http://tosbourn.com/using-git-to-create-an-archive-of-changed-files/ 으로 git archive 와 git diff 코맨드를 이용해서 변경된 파일만 추출 후 압축 파일로 만들어 준다. 아래 두 가지 상황을 예로 들어 설명해보자.

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

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

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

HEAD^는 HEAD 바로 이전 commit을 가르킨다. 위 코맨드를 실행하면 변경된 파일만 test.zip 파일로 압축된다. git archive 관련 내용은 http://git-scm.com/docs/git-archive 를 참고하면 된다.

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

tag를 이용해 버전을 관리하는 경우 이 tag를 이용해서 특정 버전 간의 변경된 파일 추출이 가능하다. 아래의 명령어를 실행하면 5.0.20 버전과 5.0.21 버전의 사이의 변경된 파일만 추출이 가능하다.

git archive -o archive.zip HEAD $(git diff --name-only 5.0.20..5.0.21)

git diff 관련 내용은 http://git-scm.com/docs/git-diff 를 참고하면 된다.

이 내용을 몰랐을 때는 항상 전체 파일을 압축해서 패치 버전을 배포했는데 위 내용을 변경된 파일만 추출할 수 있어 관리 면에서 많은 도움이 된다. git을 사용해보면 그 편의성에 감탄을 하게 된다. git 관련 내용은 계속해서 검색을 해보고 사용법을 익혀나가야겠다. 알면 알수록 더 편해질 수 있으니 말이다.

Post navigation

Previous Post:

WordPress SEO by Yoast 워드프레스 플러그인

Next Post:

헬로모바일 조건없는 USIM LTE 요금제로 번호이동

3 Commments

  1. 지운아빠 says:
    2015-01-21 at 17:45

    수정된 파일만 다운로드 받는 기능이 이 즈음에 추가되었겠네요. 🙂
    검색하면서 머리를 쥐어짜내는 중이긴 한데 미리 지정된 파일만 추출하는 방법은 없을까요?
    head.php
    tail.php
    를 지정해 놓으면 명령어 입력하면 저것만 탁! 추출되게…

    잘 읽고 갑니다.

    Reply
    1. 편리 says:
      2015-01-21 at 20:53

      http://git-scm.com/docs/git-archive 여기 내용을 보면
      path 를 지정하면 특정 파일만 추출이 가능한 것 같네요.

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

      이런 식으로 하는 듯 합니다.

      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