2021년 4월 28일 수요일

[git] git에 있는 목록 patch 파일 만들기.

---------------------------------------
git 특정 커밋에 대한 패치 생성 방법
---------------------------------------

git show commitID > name.patch
ex)
git show d9473f4ff38752a94017eceba8646d3813743edf > 0001_app_stach.patch


---------------------------------------
git 특정 커밋부터 지정한 개수만큼 패치 생성 방법
---------------------------------------

git format-patch -개수 commitID
ex)
git format-patch -3 7d7ef5d646e4c25047de18a581dc5c30527cb8da

생성된 파일
0001-aaaaa.patch // 지정된 commitId 2개 전 commit
0002-bbbbb.patch // 지정된 commitId 1개 전 commit
0003-ccccc.patch // format-patch 로 지정된 commitId

git의 로그 확인
peter$ git log -5
commit 813d065506f3dd2b1bf671c8920f8ad13f9f1818
Author:
Date: Wed Apr 28 13:00:08 2021 +0900
commit 내용 두번째

commit a3cc141e59932d9b85840acc71ccd1e4800fca7b
Author:
Date: Tue Apr 27 16:16:02 2021 +0900
commit 내용 첫번째

commit 7d7ef5d646e4c25047de18a581dc5c30527cb8da
Author:
Date: Fri Apr 16 15:00:25 2021 +0900
commit 내용 ccccc 패치 파일 생성 기준

commit 1147b12ff08b5e78d6ff495a98d3363833eb7dc3
Author:
Date: Tue Apr 13 15:57:00 2021 +0900
commit 내용 bbbbb

commit 753efad493ff138b6fd8b71e794dee252e18c1f0
Author:
Date: Tue Apr 13 09:37:37 2021 +0900
commit 내용 aaaaa

---------------------------------------
패치 파일 적용 방법
---------------------------------------

patch -p1 < 0001-aaaaa.patch

2021년 3월 14일 일요일

[git] git stash의 내용 patch 만들어 다른 pc에 적용 방법

// stash되어 있는 내용 확인.
git stash list


-----------------------------------------
// stash 선택 하여 patch 파일 만들기.
git stash show -p stash@{0} > cug.patch
-----------------------------------------
// patch파일을 적용할 폴더로 이동 cp cug.patch ../main-app/


-----------------------------------------
// patch파일 적용.
patch -p1 < cug.patch
-----------------------------------------


// patch 결과 미리 확인
patch -p1 --dry-run < cug.patch


// patch 되돌리기
patch -R -p1 < cug.patch

patch 옵션 -p[number], --strip[=number] 패스명의 제거 카운트(strip count)를 설정합니다. 패치 작성자와 다른 디렉토리에 파일을 두고 있는 경우, 패치 파일중의 패스명을 어떻게 해석하는지를 지시합니다. 제거 카운트는, 패스명의 선두로부터 몇개의 slash(/)를 제거하는지를 지정하는 것입니다(그 사이에 있는 디렉토리명도 제거됩니다). 예를 들면, 패치 파일중의 파일명이 /u/howard/src/blurfl/blurfl.c 에서 만났을 경우, -p 혹은 -p0 옵션을 지정하면, 패스명은 전혀 수정되지 않습니다.
-p1 을 지정하면, 최초의 slash(/)가 없습니다. u/howard/src/blurfl/blurfl.c
-p4 을 지정하면 blurfl/blurfl.c 그리고 -p 을 지정하지 않으면 "blurfl.c" 됩니다. 다만, 그 전의 패스(u/howard/src/blurfl)가 상대 패스로 해서 존재하는 경우는 별개로, 그 경우, 패스명 전체는 무수정인 채입니다. 마지막으로, 이렇게 해 얻을 수 있던 파일을, 커런트 디렉토리 혹은 -d 옵션으로 지정한 디렉토리내에서 찾습니다.