자식 숨김 변경 사항이 새 분기에 적용됩니까?


349

나는 마스터 브랜치에서 일하고 있었고, 약간의 변경을 한 다음 그것을 숨겼습니다. 이제 제 주인이 HEAD에 있습니다.

그러나 이제는 이러한 변경 사항을 검색하고 HEAD 버전의 마스터 분기에서 분기되는 새 분기로 검색하려고합니다.

어떻게해야합니까?


3
나는 당신이 이것을 찾고 있다고 생각합니까? stackoverflow.com/questions/556923/…
zx1986

답변:


506

표준 절차가 작동하지 않습니까?

  • 변화시키다
  • git stash save
  • git branch xxx HEAD
  • git checkout xxx
  • git stash pop

더 짧은 :

  • 변화시키다
  • git stash
  • git checkout -b xxx
  • git stash pop

8
@sfletche 숨김 이름을 지정하려면 git stash save <name>을 수행해야합니다. 그렇지 않으면 말처럼 git stash와 동일합니다.
SgtPooki

5
이 방법을 사용한 후 이전 분기로 돌아 가면 숨김 변경 사항이 반환 된 것 같습니다. 새 지점에 대한 변경 사항 만 적용 할 수 있습니까?
Thomas Higginbotham

새로운 지점에 변경 사항을 적용하십시오.
ChrisR

2
@ThomasHigginbotham no 작업 디렉토리는 브랜치간에 공통적이지 않으며 한 브랜치에서 다른 브랜치로 전달할 때 서로간에 복사됩니다. 당신이 원하는 것을 "달성"하기 위해, 나는 보통 git stash save "description"위에서 언급 한 명령으로 유용한 설명을 추가하면서 다른 숨김을 만듭니다 . 그런 다음 git clear분기 (실제 작업 디렉토리를 휴지통에 버림)를 누른 다음 git stash apply stash@{my_desired_stash}원하는 분기로 ( git checkout <branch>분명히 전환 한 후 ). 나는 그것이 실제 해결책이 아니라는 것을 알고 있지만 git으로 할 수있는 최선 입니다.
Kamafeather

나는 또한 git stash drop커밋 한
후에

221

이미 변경 사항을 저장 했으므로이 하나의 라이너 만 있으면됩니다.

  • git stash branch <branchname> [<stash>]

문서에서 ( https://www.kernel.org/pub/software/scm/git/docs/git-stash.html ) :

작성하고 <라는 새 브랜치를 체크 아웃 BRANCHNAME (가) (가) <되는 커밋에서 시작> 은닉 > 처음에 만들, <에 기록 된 변경 적용 숨겨 놓은 새로운 작업 트리와 인덱스>을. 그 성공 및 <경우 은닉 > 형태 은닉의 기준 인 {@ < 개정 >}는 다음 <삭제 은닉 >. < 숨김 이 없을 때 >가 제공 최신 것을 적용하십시오.

이것은 git stash save를 실행 한 브랜치가 충돌로 인해 git stash apply가 실패 할 정도로 충분히 변경된 경우에 유용합니다. 숨김은 git stash가 실행될 때 HEAD였던 커밋 위에 적용되므로 충돌없이 원래의 숨김 상태를 복원합니다.


3
싱글 스 태쉬의 경우이 방법이 사용됩니다. Git이 최신 숨김을 적용하고 새 분기로 전환하며 1 명령으로 숨김을 적용하므로 숨김 이름 참조는 필요하지 않습니다.
sinisterOrange

@RodneyGolpe 이것은 '마스터'에게 숨김을 적용하는 것 같습니다? 내가하고 싶은 것은 'master'에서 git stash입니다 .'git stash branch [branchname]이 새 분기에 숨김을 적용하여 마스터를 편집하지 않고 기대했을 것입니까?
David Doria 2016 년

2
@DavidDoria 마스터로 돌아 가기 전에 새 브랜치에 대한 변경 사항을 커밋해야합니다.
Rodney Golpe 2016 년

이제는 마스터 변경 사항도 커밋했습니다 ... 실제로 손실이 있습니다 ... 분명히 여전히 자식을 이해하지 못합니다. 소프트 재설정 마스터 후 원격 저장소에서 당기면 내가 원하는 곳입니다. 마스터는 변경 전 상태입니다. 새로운 지사는 변경 사항을 유지합니다.
Ekkstein

1

작업 공간에 일부 변경 사항이 있고 새 분기에이를 저장하려면 다음 명령을 사용하십시오.

git stash branch branchName

그것은 만들 것입니다 :

  1. 새로운 지점
  2. 이 지점으로 변경 사항 이동
  3. 최신 숨김을 제거하십시오 (좋아요 : git stash pop)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.