etc./StackOverFlow

커밋되지 않은 기존 작업을 Git의 새 분기로 이동

청렴결백한 만능 재주꾼 2021. 10. 5. 04:43
반응형

질문자 :Dane O'Connor


새로운 기능에 대한 작업을 시작했고 잠시 코딩한 후 이 기능이 자체 분기에 있어야 한다고 결정했습니다.

커밋되지 않은 기존 변경 사항을 새 분기로 이동하고 현재 변경 사항을 재설정하려면 어떻게 합니까?

새 기능에 대한 기존 작업을 유지하면서 현재 분기를 재설정하고 싶습니다.



2020년 업데이트 / Git 2.23

Git 2.23 checkout 의 과부하된 사용(분기 전환, 파일 복원, HEAD 분리 등)으로 인한 혼란을 해결하기 위해 switch

이 Git 버전부터 checkout 명령을 다음으로 바꿉니다.

 git switch -c <new-branch>

동작은 동일하며 변경되지 않습니다.


2020년 업데이트 전 / Git 2.23

다음을 사용하십시오.

 git checkout -b <new-branch>

이것은 현재 브랜치를 그대로 두고 새 브랜치를 생성 및 체크아웃하고 모든 변경 사항을 유지합니다. 그런 다음 커밋할 파일의 변경 사항을 준비할 수 있습니다.

 git add <files>

다음을 사용하여 새 분기에 커밋하십시오.

 git commit -m "<Brief description of this commit>"

작업 디렉토리의 변경 사항과 인덱스에 준비된 변경 사항은 아직 분기에 속하지 않습니다. 이렇게 하면 수정 사항이 끝나는 지점이 변경됩니다.

원래 분기를 재설정 하지 않고 그대로 유지됩니다. <old-branch> 의 마지막 커밋은 여전히 동일합니다. 따라서 checkout -b 한 다음 커밋합니다.


knittl

또는:

  1. 임시 보관함에 현재 변경 사항을 저장합니다.

    $ git stash

  2. 이 숨김을 기반으로 새 분기를 만들고 새 분기로 전환합니다.

    $ git stash branch <new-branch> stash@{0}

팁: 탭 키를 사용하여 숨김 이름 입력을 줄이십시오.


Robin Qiu

코딩을 하는 동안 메인 브랜치에서 커밋 을 하고 있었지만 이제 그 커밋을 다른 브랜치로 옮기고 싶다면 다음과 같이 하면 됩니다.

  1. 현재 기록을 새 분기에 복사하고 커밋되지 않은 변경 사항도 함께 가져옵니다.

     git checkout -b <new-feature-branch>
  2. 이제 원래의 "지저분한" 분기를 강제로 롤백합니다. (전환하지 않고)

     git branch -f <previous-branch> <earlier-commit-id>

    예를 들어:

     git branch -f master origin/master

    또는 4개의 커밋을 수행한 경우:

     git branch -f master HEAD~4

경고: git branch -f master origin/master 는 해당 분기에 대한 추적 정보를 재설정합니다. origin/master 아닌 다른 위치로 푸시하도록 master 분기를 구성한 경우 해당 구성이 손실됩니다.

경고: 분기 후 리베이스하면 일부 커밋이 손실될 수 있는 위험이 있습니다. 이에 대해 여기에 설명되어 있습니다. 그것을 피하는 유일한 방법은 체리 픽을 사용하여 새로운 역사를 만드는 것입니다. 그 링크는 덜 편리하지만 가장 안전한 바보 방지 방법을 설명합니다. (당신이 커밋되지 않은 변경이있는 경우, 당신은해야 할 수도 있습니다 git stash 시작과에서 git stash pop 끝.)


joeytwiddle

일반적인 시나리오는 다음과 같습니다. 새 기능에 대한 새 분기를 만드는 것을 잊었고 이전 기능 분기에서 모든 작업을 수행하고 있었습니다. 나는 모든 "이전" 작업을 마스터 브랜치에 커밋했으며 내 새 브랜치가 "마스터"에서 성장하기를 원합니다. 나는 내 새 작업에 대해 단 한 번도 커밋하지 않았습니다. 다음은 분기 구조입니다. "master"->"Old_feature"

 git stash git checkout master git checkout -b "New_branch" git stash apply

Alex Burov

커밋하면 단일 커밋 ID를 체리픽할 수도 있습니다. 나는 master에서 작업을 시작할 때 자주 이 작업을 수행한 다음 내 origin/에 푸시하기 전에 로컬 분기를 만들고 싶습니다.

 git cherry-pick <commitID>

여기 에 설명된 대로 체리 픽으로 할 수 있는 일이 많이 있지만 이것은 당신을 위한 유스 케이스가 될 수 있습니다.


password

이전에는 기능이 없었다고 생각하지만 지금은 GitHub Desktop으로 이 작업을 수행하는 정말 쉬운 방법이 있습니다.

GitHub Desktop에서 새 분기로 전환하기만 하면 현재 분기에 변경 사항을 그대로 두거나(저장될) 변경 사항을 새 분기로 가져오라는 메시지가 표시됩니다. 변경 사항을 새 분기로 가져오려면 두 번째 옵션을 선택하기만 하면 됩니다. 그런 다음 평소와 같이 커밋할 수 있습니다.

GitHub 데스크탑


Kristofer Doman

이것은 GIT용 도구를 사용하는 모든 사람에게 도움이 될 수 있습니다.

명령

분기 전환 - 변경 사항을 새 분기로 이동합니다. 그런 다음 변경 사항을 커밋할 수 있습니다.

 $ git checkout -b <new-branch>

거북이GIT

저장소를 마우스 오른쪽 버튼으로 클릭한 다음 TortoiseGit->Switch/Checkout을 사용합니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

소스 트리

분기를 전환하려면 "체크아웃" 버튼을 사용하십시오. 지점을 클릭하면 상단에 "결제" 버튼이 표시됩니다. 현재 분기의 변경 사항이 자동으로 적용됩니다. 그런 다음 커밋할 수 있습니다.

여기에 이미지 설명 입력


Przemek Struciński

@Robin 답변을 사용하고 내가 한 모든 것을 나열했습니다.

 git status <-- review/list uncommitted changes git stash <-- stash uncommitted changes git stash branch <new-branch> stash@{1} <-- create a branch from stash git add . <-- add local changes git status <-- review the status; ready to commit git commit -m "local changes ..." <-- commit the changes git branch --list <-- see list of branches incl the one created above git status <-- nothing to commit, working tree (new-branch) is clean git checkout <old-branch> <-- switch back

! 리포지토리에 둘 이상의 stash가 있는 경우 새 브랜치에 적용할 stash를 확인하세요.

 git stash list stash@{0}: WIP on ... stash@{1}: WIP on ...

다음을 통해 개별 보관함을 검사합니다.

 git stash show stash@{1}

또는 모든 은닉물을 한 번에 검사:

 git stash list -p

nbs

변경 사항을 커밋하는 3단계

feature-branch 라는 이름으로 GitHub에 새 분기를 생성했다고 가정합니다.

여기에 이미지 설명 입력

술책

 git pull --all Pull all remote branches git branch -a List all branches now

기능 분기 디렉토리를 체크아웃하고 전환합니다. 위의 branch -a 명령의 출력에서 분기 이름을 복사하기만 하면 됩니다.

git checkout -b feature-branch

확인

다음으로 git branch 명령을 사용하여 현재 분기를 확인합니다. 앞에 *가 있는 기능 분기가 표시됩니다.

 git branch

저 지르다

 git add . add all files git commit -m "Rafactore code or use your message"

원본 서버에서 업데이트 및 푸시 변경 사항 받기

 git pull origin feature-branch git push origin feature-branch

Hitesh Sahu

출처 : 여기를 클릭하세요


출처 : http:www.stackoverflow.com/questions/1394797/move-existing-uncommitted-work-to-a-new-branch-in-git

반응형