git-diff에서 패치 호환 출력을 얻을 수 있습니까?
나는 매우 간단한 것을하고 있습니다. 일반 패치 파일을 준비하려고하므로 몇 가지 변경 사항을 다시 적용 할 수 있습니다.
$ git diff > before
$ git diff something_here > save.patch
$ git checkout .
$ patch < save.patch
$ git diff > after
$ diff before after
$
함께 something_here
빈 거의 작동하지만 파일 이름은 잘하지 않습니다. 옵션이 누락 된 것 같습니다.
실제로는 결제 후 병합을 수행 할 예정이므로 패치가 실패 할 수 있지만 내가 뭘 받고 있는지 알 수 있습니다.
잘못된 질문을하기 위해 여기에서 내 잘못을 편집 하십시오. 실제 질문은 변경 사항을 저장하고 병합하고 가능한 경우 변경 사항을 다시 적용하고 싶습니다. 패치를 사용하여 이러한 종류의 문제를 해결하는 데 익숙해 졌기 때문에 잘못된 방식으로 요청했으며 그것이 내가 git diff
원하는 바인 것처럼 보였습니다.
Charles Bailey의 의견 에는 정답이 있습니다. 나를 위해, git-apply는 옳은 일입니다 (git-stash는 내가 필요로하는 것보다 더 무겁게 보이며 rebasing 및 번들은 확실히 현재 기술 수준을 초과합니다.) Charles가 보낸 대답을 받아 들일 것입니다 (당신 때문에) 댓글을 수락 할 수 없습니다). 모든 제안에 감사드립니다.
6 년 후 편집 이 주제에 익숙한 사람이 알고 있듯이 나는의 어려움을 과대 평가했다 git stash
. 거의 매일 정도, 나는 다음 순서를 사용합니다 :
$ git stash
$ git merge
$ git stash pop
패치를 사용하려면 a/
b/
git이 기본적으로 사용 하는 접두사 를 제거해야합니다 . --no-prefix
옵션을 사용 하여이 작업을 수행 할 수 있습니다 (패치 -p
옵션을 사용 하여 수행 할 수도 있음 ).
git diff --no-prefix [<other git-diff arguments>]
일반적으로 스트레이트 git diff
를 사용하고 출력을 사용하여 피드 하는 것이 더 쉽습니다 git apply
.
대부분 텍스트 패치를 사용하지 않으려 고합니다. 일반적으로 하나 이상의 임시 커밋이 rebase와 결합되어 git stash
번들이 관리하기가 더 쉽습니다.
귀하의 유스 케이스에는 이것이 stash
가장 적절 하다고 생각합니다 .
# save uncommitted changes
git stash
# do a merge or some other operation
git merge some-branch
# re-apply changes, removing stash if successful
# (you may be asked to resolve conflicts).
git stash pop
그냥 사용 -p1
: 당신이 사용해야합니다 -p0
에 --no-prefix
그냥 떠날 수 있도록, 어쨌든 케이스 --no-prefix
및 사용을 -p1
:
$ git diff > save.patch
$ patch -p1 < save.patch
$ git diff --no-prefix > save.patch
$ patch -p0 < save.patch
git diff에는 파일 경로 앞에 추가 경로 세그먼트가 있습니다. 패치와 함께 -p1을 지정하여 경로에서이 항목을 제거 할 수 있습니다.
patch -p1 < save.patch
- 현재 HEAD에 대해 현재 디렉토리 (커밋되지 않은 파일 포함)의 diff를 저장합니다.
- 그런 다음
save.patch
파일을 이진 파일을 포함한 모든 위치로 전송할 수 있습니다 . - 대상 컴퓨터에서 다음을 사용하여 패치를 적용하십시오.
git apply <file>
참고 : 현재 준비된 파일이기도합니다.
$ git diff --binary --staged HEAD > save.patch
$ git reset --hard
$ <transport it>
$ git apply save.patch
임시 패치 파일 생성을 피하는 유용한 방법 :
git diff | patch -p1 -d [dst-dir]
참고 : https://stackoverflow.com/questions/4610744/can-i-get-a-patch-compatible-output-from-git-diff
'Programing' 카테고리의 다른 글
JSON 문자열을 NSDictionary로 역 직렬화하려면 어떻게해야합니까? (0) | 2020.06.10 |
---|---|
Haml에서 조건이 참인 경우 클래스 추가 (0) | 2020.06.10 |
공급자 com.google.firebase.provider.FirebaseInitProvider를 가져올 수 없습니다 (0) | 2020.06.10 |
iOS 앱에서 문서 폴더 안에 폴더 만들기 (0) | 2020.06.10 |
COUNTIF 집계 함수에 해당하는 SQL Server (0) | 2020.06.10 |