programing

Git - 잘못된 분기 작업 - 기존 항목 분기에 변경사항을 복사하는 방법

bestprogram 2023. 5. 22. 21:53

Git - 잘못된 분기 작업 - 기존 항목 분기에 변경사항을 복사하는 방법

프로젝트를 진행하고 있는데 아쉽게도 지점으로 전환하는 것을 잊어버려서 마스터 작업을 계속하고 있습니다.

여기서 수행한 작업(3개 파일)을 마스터에서 분기(예: branch123)로 복사하려면 마스터에 커밋하지 않고 어떻게 해야 합니까?

필요한 것은 다음과 같습니다.

git stash
git checkout branch123
git stash apply

그러면 마스터 브랜치를 건드리지 않고 자신의 브랜치로 돌아가야 합니다.

인정된 답변이 가장 철저하지만, 단순화할 수 있는 특별한 경우가 있습니다.작업 디렉토리에서 수정한 파일이 모두 동일한 경우master그리고.branch123당신은 간단히 할 수 있습니다.

git checkout branch123

의 기본 동작이기 때문에 아무것도 저장할 필요가 없습니다.checkout작업 디렉터리에서 수정된 파일을 덮어쓰지 않기 때문에 손실되는 것이 없습니다. (이것은 실제로 Cascabel이 처음 언급한 주석에서 언급되었습니다.)

다른 사람들이 댓글에서 언급했듯이, 만약에.branch123아직 존재하지 않습니다. 할 수 있습니다.

git checkout -b branch123

제가 여기서 찾은 것을 근거로 합니다.

git stash당신에게 필요한 것입니다.

자세한 설명은 Git-Tools-Stashing에서 확인할 수 있습니다.

파일을 체크아웃하는 동안 새 분기를 만들 수는 있지만 기존 분기를 체크아웃할 수는 없기 때문에 임시 분기를 사용하여 다음과 같은 트릭을 발견했습니다.

이 시나리오는 적어도 VS 2015 Git 플러그인에서는 작동하지만 대부분의 Git 도구에서는 작동합니다.

  1. 마스터의 파일을 체크아웃하고 변경합니다(업!, 잘못된 분기).
  2. 마스터에서 새 분기 "접두사"(또는 사용하지 않는 이름)를 작성합니다.체크아웃된 파일은 이제 마스터가 아닌 임시로 체크아웃됩니다.
  3. temp 변경사항 체크인(마스터는 변경되지 않음)
  4. 이제 모든 항목이 체크인되었으며 기존 지점을 체크아웃할 수 있습니다.원하는 지점(처음부터 변경하고 싶었던 지점) 3.5 GitRebase를 확인하십시오.
  5. 원하는 분기에 merge temp.이제 변경 사항은 올바른 분기에 있습니다.
  6. 더 이상 필요하지 않으므로 temp 브랜치

편집: 병합을 수행하기 전에 임시 분기의 기본 재배치(gitrebase --to)를 수행해야 한다는 것을 알게 되었습니다.그렇지 않으면 마스터의 변경 내용이 병합에 포함됩니다.위의 3.5단계를 추가합니다.rebase에 대한 자세한 내용은 여기를 참조하십시오. https://git-scm.com/book/en/v2/Git-Branching-Rebasing

Github 데스크톱

Github Desktop에서 새 분기를 만들거나 변경 사항이 커밋되지 않은 다른 분기로 이동할 때 변경 사항을 그대로 둘 인지 새 분기로 이동할 것인지 묻는 메시지가 표시됩니다.

여기에 이미지 설명 입력

언급URL : https://stackoverflow.com/questions/5964118/git-working-on-wrong-branch-how-to-copy-changes-to-existing-topic-branch