반응형
Git은 분산 버전 제어 시스템으로 설계되었습니다. git format-patch 기능을 사용하여 중앙 집중식 Git 저장소가 없어도 실제로 검토 할 수있는 patch를 보낼 수 있습니다. 이것은 원격 Git 리포지토리가 다운되었을 때 매우 유용합니다.
patch 준비
변경 사항을 보낼 준비가되면 git format-patch [BASE_BRANCH_NAME]을 사용하십시오.
$ git format-patch master
0001-Update-build-matrix.patch
0002-Display-current-gemfile-when-run-bundle-update.patch
내 feature branch는 마스터보다 두 개 앞에 있는 커밋이므로 Git은 각 커밋마다 하나씩 두 개의 파일을 만듭니다. 파일을 검사하면 커밋 메시지와 함께 변경 사항이 표시됩니다.
From b2df28155560c68772063df3b3250d811e66f35e Mon Sep 17 00:00:00 2001
From: Prem Sichanugrist <prem@example.com>
Date: Mon, 25 Jan 2016 18:18:38 -0500
Subject: [PATCH 1/2] Update build matrix
Build Appraisal against these versions of Ruby
... snip ...
---
.travis.yml | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 6b56084..52d0bff 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,12 +3,12 @@ sudo: false
before_install: gem install bundler
rvm:
- - 1.8
- - 1.9
- - 2.0
- - 2.1
... snip ...
--
2.7.0
파일을 하나만 만들려면 첨부 파일로 더 쉽게 사용하거나 다른 곳에 업로드하려면 --stdout 옵션을 사용하여 출력을 파일로 리디렉션할 수 있습니다.
$ git format-patch master --stdout > new-feature.patch
$ cat new-feature.patch
From b2df28155560c68772063df3b3250d811e66f35e Mon Sep 17 00:00:00 2001
From: Prem Sichanugrist <prem@example.com>
Date: Mon, 25 Jan 2016 18:18:38 -0500
Subject: [PATCH 1/2] Update build matrix
Build Appraisal against these versions of Ruby
... snip ...
--
2.7.0
From 54c7c4b5df552ef7540d4612c17dbbcc1079f47c Mon Sep 17 00:00:00 2001
From: Prem Sichanugrist <prem@example.com>
Date: Mon, 25 Jan 2016 18:14:06 -0500
Subject: [PATCH 2/2] Display current gemfile when run `bundle update`
This is done by setting `gemfile` setting directly and not through
`BUNDLE_GEMFILE` setting.
---
... snip ...
git diff를 사용하고 변경 사항을 파일로 파이프하는 것이 가능하지만 git format-patch는 변경 사항을 설명하는 커밋 메시지가 포함되어 있기 때문에 더 나은 방법이라고 생각합니다.
patch를 검토하려면
누군가로부터 patch 파일을 받으면 git am 명령을 사용하여 패치를 쉽게 적용 할 수 있습니다.
# Checkout to a new branch
$ git checkout review-new-feature
# If you received the patch in a single patch file
$ cat new-feature.patch | git am
# If you received multiple patch files
$ cat *.patch | git am
# Check the result
$ git log --oneline
6787572 Display current gemfile when run `bundle update`
928928c Update build matrix
...
git am과 병합하는 patch의 SHA는 동일한 SHA가 아닙니다. 그러나 커밋 메시지는 손상되지 않습니다.
반응형
'SW > Git' 카테고리의 다른 글
제트브레인 : .idea : 역할, git 제외 방법 (0) | 2019.10.26 |
---|---|
git : cherry-pick 개념, 사용법 (0) | 2019.10.12 |
squash : pull request을 병합하는 완전히 새로운 방법 : 개념 (0) | 2019.10.10 |
GIT : pull request : 개념, 컨셉, 방법 (0) | 2019.10.09 |
git pusfh.default option : matching 과 simple 차이점 관련 (0) | 2019.05.10 |