현재 분기의 모든 변경 사항을 가져 와서 Git의 새 분기로 이동


105

마스터 브랜치에서 사소한 버그 수정이 될 것이라고 생각한 작업을 시작했습니다. 그러나 처음에 개발을 수행하기 위해 별도의 분기를 만들었 으면하는 시점까지 통제 할 수 없게되었습니다.

그래서 지금 제가하고 싶은 것은 :

  1. "edge"라고하는 새 분기를 만듭니다.
  2. 마스터에서 변경 / 추적되지 않은 모든 파일을 에지로 이동 (예 : 버그 수정을 시작할 때 마스터가 변경되지 않음)
  3. 가장자리에서 내 작업을 끝내고 마스터로 다시 병합

어떻게 할 수 있습니까?

답변:


103

아직 아무것도하지 않았다면 이미 올바른 위치에있는 것입니다.

  1. 새 분기를 만듭니다. git checkout -b edge
  2. 파일이 변경되지 않았습니다. 그냥 git add평소처럼 무엇을 필요로하고 커밋.
  3. 당신이 커밋이 완료되면 edge, 다시 전환 mastergit checkoutgit merge edge.

첫 번째 줄은 환영 광경 ... 휴, 실제로 :-) 매우 고통이었다 그래서, 아직 커밋 아무것도했다
Drenai

87

JB의 답변에 추가하려면 마스터에 대해 몇 가지 커밋을 이미 시작하여 "엣지"노력으로 끝났 으면 다음 과 같이 할 수 있습니다.

git stash
git checkout -b edge master
git branch -f master SHA1_before_your_commits
git stash apply

숨김 래퍼는 꼭 필요한 것은 아니지만 커밋되지 않은 작업 변경에만 적용됩니다.
HaveAGuess 2011 년

4
@HaveAGuess 맞아. "내 변경 사항 모두 가져 오기"를 통해 아직 추가되지 않은 현재 변경 사항도 포함했습니다. 따라서 은닉.
VonC

두 번째와 세 번째 줄을 "git checkout -b edge master"로 축소 할 수 없습니까?
Paul Lynch

@PaulLynch 켜져 master있어야 하는 커밋 (on )이 켜져 있다고 생각 합니다. 나는 대답을 편집했습니다. edge master
VonC 2013 년

git stash사용 git checkout -b이 작업 트리를 전혀 수정하지 않기 때문에 여기서 어떻게 유용한 지
모르겠습니다

13

master에서 이미 존재하지만 master 뒤에있는 브랜치로 작업을 이동하려는 경우 git은 다른 브랜치로 전환 할 수 없습니다. 이 경우 다음을 수행하십시오.

git stash
git checkout oldBranch
git merge master
git checkout master
git stash apply
git checkout oldBranch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.