답변:
git stash
당신의 친구입니다.
아직 커밋하지 않은 경우 실행하십시오 git stash
. 변경 사항이 모두 저장됩니다.
변경하려는 지점으로 전환하고 실행 git stash pop
합니다.
자식 숨김에 대한 많은 용도가 있습니다. 이것은 확실히 더 유용한 이유 중 하나입니다.
예를 들면 :
# work on some code
git stash
git checkout correct-branch
git stash pop
C:\kf [develop +0 ~4 -0]> git checkout feature/customers<br/> error: Your local changes to the following files would be overwritten by checkout:<br/> AspWebApp.vNext/global.asa<br/> RestApi/Web.config<br/> Please, commit your changes or stash them before you can switch branches.<br/> Aborting
아직 변경 사항을 커밋하지 않은 경우git checkout
새로운 지점으로 이동 한 후 일반적으로 커밋 - 파일의 변경은 특정 지점에 연결되지 않습니다 당신이 커밋 될 때까지.
당신이 경우 한 이미 변경 사항을 최선을 다하고 있습니다 :
git log
이동하려는 커밋의 SHA를 하고 기억하십시오.git cherry-pick SHA
위에서 SHA를 대체하여 입력 하십시오.git reset HEAD~1
잘못된 분기 커밋 전에 다시 설정하는 데 사용하십시오 .cherry-pick
주어진 커밋을 가져 와서 현재 체크 아웃 된 헤드에 적용하여 커밋을 새 브랜치에 복사 할 수 있습니다.
git reset HEAD~N --soft
다음 git checkout -b
모든 이동 지금은 새로운 지점에 커밋되지 않은 코드를.
슬프게도 이것은 나에게도 정기적으로 발생하며 git stash
이전에 실수를 알고 다른 방법으로 git commit
사용 git cherry-pick
하면 두 명령 모두 다른 답변에서 잘 설명됩니다.
다음에 대한 설명을 추가하고 싶습니다 git checkout targetBranch
. 이 명령은 targetBranch의 현재 분기와 동일한 히스토리가있는 경우 작업 디렉토리 및 단계적 스냅 샷 만 보존합니다.
변경 사항을 아직 커밋하지 않은 경우 git checkout을 사용하여 새 분기 로 이동 한 다음 정상적으로 커밋하십시오.
황색의 진술이 거짓되지 않습니다 @ 당신이로 이동할 때, newBranch , git checkout -b newBranch
새로운 포인터가 생성되고 동일한 현재 브랜치로 커밋에 그것을 가리키고 있습니다.
사실, 현재 지점과 같은 내역을 공유하는 다른 지점 (동일한 커밋 지점)이있는 경우 다음과 같이하여 "변경 사항을 이동"할 수 있습니다.git checkout targetBranch
그러나 일반적으로 다른 브랜치는 다른 히스토리를 의미하며, Git은 더러운 작업 디렉토리 또는 스테이징 영역으로 이러한 브랜치 사이를 전환 할 수 없습니다. 이 경우 git checkout -f targetBranch
변경 사항 정리 (clean and throwaway) 또는 git stage
+ git checkout targetBranch
( 변경 사항 정리 및 저장 )를 수행 git checkout targetBranch
할 수 있습니다. 단순히 실행 하면 오류가 발생합니다.
오류 : 다음 파일에 대한 로컬 변경 사항이 체크 아웃으로 겹쳐 써집니다. ... 분기를 전환하기 전에 변경 사항을 커밋하거나 숨기십시오. 중단
소프트 자식 재설정 최선을 다하고 변경 사항이 인덱스에 다시 넣어 것입니다. 다음으로 커밋하려는 지점을 체크 아웃하십시오. 그런 다음 새로운 커밋 메시지로 git commit 합니다.
git reset --soft <commit>
git checkout <branch>
git commit -m "Commit message goes here"
에서 자식 문서 :
git reset [<mode>] [<commit>]
이 양식은에 따라 현재 분기 헤드를 재설정하고 색인 (트리의 재설정)과 작업 트리를 업데이트합니다. 생략하면 기본값은 --mixed입니다. 다음 중 하나 여야합니다.
--soft
인덱스 파일이나 작업 트리를 전혀 만지지 마십시오 (그러나 모든 모드와 마찬가지로 헤드를로 재설정하십시오). 이것은 git status에 의해 변경된 모든 파일을 "Commit to commit"으로 남겨둔다.