2016년 5월 30일 월요일

git format-patch와 git am

출장때문에 집으로 회사 노트북을 가지고 왔더니, 집에서 git에 commit을 몇 번 했다. 이걸 회사 git에도 반영해야 하는데, 출장을 다녀와서 반영하기에는 일주일이라는 시간이 기다리는 사람 입장에서는 좀 길게 느껴질 것 같다.

언듯 이메일로 커밋 내용을 보내면 다른 사람이 대신 커밋해줄수 있다고도 들어서, 이걸 해보기로 했다.

1.
git email patch라고 검색하니까 세번째 검색결과에 원하는 git 명령어들이 모여있었다. 여러가지가 있는데, 내가 원하는 것은 git format-patch와 git am이었다.

2.
git format-patch명령어를 사용해서 내가 작업중인 branch에 커밋한 내용을 이메일 전송 형식의 파일로 만들어 낼 수 있었다. git format-patch -8 명령으로 최근 8개의 커밋의 패치파일을 한번에 만들었다.

3.
파일을 회사 메일로 보내고, VDI로 접속해서 패치파일을 git workspace에 복사하고 git am 0001.patch를 입력하니 에러가 발생했다. tailing-space와 관련된 에러였는데, --whitespace=fix 옵션을 추가해서 git이 알아서 고치도록 만들었다.

4.
git am --whitespace=fix 0002.patch 0003.patch 0004.patch ........ 0008.patch를 입력해서 한번에 공백문자 해결하면서 commit이 적용되도록 만들었다. remote에 push까지 하고 빌드도 수행했다.

5.
출장 중에 수정되는 소스를 로컬 git repo에 commit하고, 위와 같은 방식을 거쳐서 그날그날 회사 git 서버에도 적용이 가능할 것 같다.