Skip to content
TUWLAB.com
모든 게시물에 대하여 '링크'
방식의 퍼가기만 허용합니다.
한양대학교 전자통신컴퓨터공학부
바라미
  • 515
  • 2573887
DNS Powered by DNSEver.com
일반

[GIT] Patch 만들기 및 적용하기: format-patch, am

Posted 2014. 10. 23 Updated 2015. 01. 10 Views 40854 Replies 0


앞선 글에서 GIT을 활용하여 작업을 할 때는 로컬 저장소에서 작업을 하고 이를 원격 저장소로 Push해서 다른 개발자와 작업 내용을 공유하는 순서로 진행한다고 설명하였습니다.

원격 저장소로 Push를 하는 권한은 대개 아무에게나 주지 않고 프로젝트 팀원들에게만 선별적으로 부여하며, 이 인증 절차는 대개 원격 저장소에 SSH Key를 등록하면서 이루어집니다.

하지만 이러한 방식은 GIT을 활용하여 오픈소스 프로젝트를 진행하는 경우 사용할 수 없습니다. 비록 '오픈소스'라고 불리지만, 아무에게나 Push 권한을 주지 않기 때문입니다.

모두에게 공개된 오픈소스 프로젝트더라도 프로젝트 안에서 개발자의 신분에 따라 권한이 나누어져 있습니다. 원격 저장소의 Main Stream 소스코드에 직접 Push할 수 있는 권한을 가진 개발자를 'Commitor'라 부릅니다.

Commitor 아래에는 다수의 Contributor가 위치하며, 이들은 Push 권한은 갖지 않고자신의 아이디어를 Commitor에게 제시하거나 로컬 저장소에서 직접 수정한 코드를 제공하는 등의 간접적인 방법으로 오픈소스 프로젝트에 기여합니다. 물론, Contributor의 제안이나 수정을 반영할 지 말지는 Commitor가 결정합니다.

Contributor와 같이 프로젝트에 기여하고 있으나 Push 권한을 갖지 않는 특수한 상황에 유용하게 사용할 수 있는 기능이 바로 Patch입니다.

Commit을 하나의 Patch 파일로 만들 수 있고, 이를 이메일 등을 통해 Commitor에게 전달하면 Commitor가 작업 내용을 검토한 뒤 Main Stream 소스코드에 반영할 수 있습니다.


Patch 만들기 - format-patch

특정 Commit ID를 지정하여 해당 Commit을 Patch로 만들 수 있습니다.

git format-patch {Commit ID}

HEAD로부터 시작해서 몇 개의 Commit을 Patch로 만들고자 한다면, Commit ID 대신 다음과 같이 간단한 명령어를 사용할 수 있습니다.

git format-patch -{Patch를 생성할 Commit의 수}

예를 들어, 다음 명령어는 HEAD로부터 3개의 Commit으로부터 Patch를 생성합니다.

git format-patch -3


Patch 적용하기 - am

이메일 등을 통해 Patch파일을 받아와서 이를 적용하려 할 경우 am 명령어를 사용합니다.

git am {Patch 파일명}

Patch를 적용하면 해당 하는 Commit이 자동으로 생성되어 현재 Branch에 붙게 됩니다. 만약 Patch를 적용하는 과정에서 충돌과 같은 문제가 발생하면 작업이 중단되며, 충돌을 해결한 뒤 재개해야 합니다.


TAG •
서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
59 일반 [Make 튜토리얼] Makefile 예제와 작성 방법 및 기본 패턴 2 file TUW 2018.11.21 234112
58 일반 [CMake 튜토리얼] 2. CMakeLists.txt 주요 명령과 변수 정리 1 file TUW 2019.10.02 180566
57 일반 [CMake 튜토리얼] 1. CMake 소개와 예제, 내부 동작 원리 file TUW 2018.06.13 166297
56 일반 영어로 나타낸 수학 용어 모음 2 file TUW 2018.01.08 82446
55 일반 [Windows] 다중 NIC(LAN카드) 환경에서 Routing Table 설정 - route 명령 2 file TUW 2019.10.21 72771
54 일반 [GIT] 실행취소와 Commit 삭제: reflog, reset, checkout, revert TUW 2019.04.28 64553
53 일반 Windows에서 포트 포워딩(Port Forwarding) 설정하기 - Netsh TUW 2018.02.03 61622
52 일반 File Object (<input type='file' />)에 대하여 2 file TUW 2017.06.02 51401
51 일반 [CMake 튜토리얼] 3. CMakeLists.txt 기본 패턴 5 TUW 2019.08.19 48899
50 일반 [GIT] Branch 관리하기: branch, checkout, push, pull 2 TUW 2018.02.03 48376
49 일반 신호 레벨 변환 회로(Level Transceiver/Translator/Shifter) 설계 file TUW 2021.12.28 47899
48 일반 Windows 7에서 보호된 노트북 복구파티션 삭제하기 file TUW 2017.06.02 44051
47 일반 [WSL] Windows Subsystem for Linux - SSH 서버 세팅하기 file TUW 2021.12.28 43071
46 일반 [포토샵] 사진 가장자리 투명하게 처리하기 file TUW 2017.06.02 42300
» 일반 [GIT] Patch 만들기 및 적용하기: format-patch, am TUW 2015.01.10 40854
44 일반 [사설 클라우드 구축] 자동 동기화 설정 (FreeFileSync) 2 file TUW 2017.06.02 39036
목록
Board Pagination Prev 1 2 3 4 Next
/ 4

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5