2010-01-29 2 views
92

git에서 변경 사항을 숨기고 있습니다. 내가 숨어있는 것들로 패치를 만들 수 있습니까? 그리고 다른 저장소 (내 동료)의 패치를 적용할까요?내가 숨어있는 것을 어떻게 패치 할 수 있나요?

나는 'git format-patch -1'을 알고 있지만, 나는 그것이 저질렀다고 생각한다. 그러나 내가 멀리 은닉 한 변화에 대해 똑같은 것을 찾고 있습니까?

그리고 어떻게 다른 저장소에 패치를 적용 할 수 있습니까? 물론

답변

108

, git stash show이 지원 :

git stash show -p 
+1

에 지사 A는 변경 사항을 적용합니다. 내 패치가 여러 파일에 닿았다고 가정 해 봅시다. 패치를 '대화식으로'적용 할 수있는 방법이 있습니까?패치를 적용 할 패치 파일을 선택하십시오. 할 수 있습니까? – silverburgh

+1

@silverburgh : 나는'man patch'를 빠르게 살펴 봤고 대화 형 패치 응용 프로그램을위한 옵션을 보지 못했습니다. 그러나 패치 파일은 일반 텍스트 파일이므로 일반적으로 텍스트 편집기에서 패치를 편집하여 관련 부분을 잘라내어 '패치'로 적용합니다. 다른 패치를 다른 Git 저장소에 적용하는 경우 패치를 적용한 다음 변경하지 않으려는'git checkout' 파일을 선택적으로 적용 할 수 있습니다 (파일 이름이있는'git checkout'은 unstaged 변경을 버립니다). –

+0

@silverburgh git apply의 "--exclude"및 "--include"매개 변수를 사용하여 패치 된 파일 세트를 제한 할 수 있습니다. – Kelvin

15

사용

$> git stash list 
[email protected]{0}: WIP on master: 84fx31c Merged with change to /public/ 
[email protected]{1}: WIP on master: 463yf85 FlupResource: also takes json as a query parameter 

을 최근에 은닉 물건의 목록을 얻을 수 있습니다. 실제로 Git은 숨길 때 커밋 객체를 만듭니다.

다른 모든 것과 마찬가지로 커밋입니다. 분기에서 체크 아웃 할 수 있습니다.

$> git checkout -b with_stash [email protected]{0} 

그런 다음이 분기를 게시하면 동료가 해당 커밋을 병합하거나 체리 선택을 할 수 있습니다.

10

위의 솔루션은 바이너리 데이터에는 작동하지 않습니다. 은 IT에 대한 지원을 추가 다음

git stash show [email protected]{0} -p --binary 

편집

참고 : 난 그냥 위의 답변에 댓글을 추가하고 싶었지만 내 평판이 충분하지 않습니다.

28

이 답변은 패치를 저장하고 사용하려는 곳에 적용하는 것에 대한 정보를 제공합니다. 적용 패치

git apply my-patch-name.patch 

git apply --check my-patch-name.patch 

:

git apply --stat my-patch-name.patch 

이 오류를 확인하지 :

git stash show -p --color=never > my-patch-name.patch 

패치 좋아 보인다 확인

은 파일에 출력을 숨기고하려면
+0

이 파일은 일반 텍스트 코드 파일과 함께 작동하지만 공백을 고려해야합니다. 이 '자식 적용 --check --ignore-공간 변화 내 패치 - name.patch' 이 패치를 적용 --ignore-공백 : '자식이 --ignore- 적용 확인 패치는 좋아 보인다 space-change --ignore-whitespace my-patch-name.patch' –

1

나는 이것이 Git의 최근 우화곡 중 하나라고 생각한다. 더 이상 은닉 한 변경 사항을 패치하지 않아도됩니다. 한 브랜치의 숨겨진 변경 사항을 다른 브랜치에 적용하면됩니다.

브랜치 A에서 stash @ {1}이라고하는 변경 사항을 숨겼습니다.

당신은 지금 당신이 단지 수있는 지점 B로 전환 :

$git stash apply [email protected]{1} 

이 내가 관련 질문에 대한 패치를 적용해야 지점 B.

관련 문제