로컬 변경 사항을 버리지 않고 git switch branch
자, 언젠가 우리는 많은 수정을하게되었고, 우리가 그것들을 커밋 할 때 우리는 잘못된 브랜치에서 일하고 있음을 알 수 있습니다.
로컬 변경 사항을 버리지 않고 git이 분기를 전환하도록하려면 어떻게해야합니까 ?
나는 대답을 기다리는 동안 순진한 방식으로 이것에 대해 갈 것입니다. 그러나 이것이 전에 나에게 일어난 적이 없다고 말하면 거짓말하고있는 올바른 절차가 있는지 알고 싶습니다 ...
- 백업 변경 저장소
git reset --hard
git checkout right-branch
- 변경 사항 복원
git commit -m "changes"
당신이 얼마나 멀리 떨어져 있는지 그리고 당신이 원하는 지점에 따라 다양한 방법이 있습니다.
고전적인 실수를 봅시다 :
$ git checkout master
... pause for coffee, etc ...
... return, edit a bunch of stuff, then: oops, wanted to be on develop
그래서 지금 당신은 당신이 아직 최선을 다하고하지 않은 이러한 변경이 원하는 master
에로 develop
.
당신이있는 경우 가없는 을
develop
아직 방법은 간단하다 :$ git checkout -b develop
이것은
develop
당신이 지금 어디에서 시작 하여 새로운 지점을 만듭니다 . 이제 커밋 할 수 있고 새로운 것들이 모두 켜져develop
있습니다.당신 이 할 을
develop
. Git이 아무것도하지 않고 전환 할 수 있는지 확인하십시오.$ git checkout develop
이것은 성공하거나 불평 할 것입니다. 성공하면 훌륭합니다! 커밋하십시오. 그렇지 않은 경우 (
error: Your local changes to the following files would be overwritten ...
) 여전히 많은 옵션이 있습니다.가장 쉬운 방법 일 것입니다
git stash
(클릭하는 것에 대해 다른 모든 응답자가 post말했듯이).git stash save
또는git stash push
, 1 또는 /에git stash
대한 간단한 일반 을 실행하십시오 .save
push
$ git stash
이것은 이상한 non-branch-y 메소드를 사용하여 코드를 커밋합니다 (예, 실제로 커밋합니다). 커밋은 어떤 브랜치 "on"이 아니라 이제 리포지토리에 안전하게 저장되므로 이제 브랜치를 전환 한 다음 스 태쉬를 "적용"할 수 있습니다.
$ git checkout develop Switched to branch 'develop' $ git stash apply
모든 것이 잘되고 결과가 마음에
git stash drop
들면 숨겨야합니다. 이것은 이상한 non-branch-y commit에 대한 참조를 삭제합니다. (그들은 여전히 저장소에 있으며 때로는 비상 사태에서 검색 할 수 있지만 대부분의 경우 해당 시점에 사라 졌다는 것을 고려해야합니다.)
이 apply
단계는 Git의 강력한 기본 병합 기계를 사용하여 분기 병합을 수행 할 때 사용하는 것과 같은 종류의 숨김 변경 사항을 병합합니다. 이는 실수로 작업중인 지점이 작업하려는 지점과 충분히 다른 경우 "병합 병합"을 얻을 수 있음을 의미합니다. 따라서 Git 자체가 병합 충돌을 감지하지 않더라도 숨김이 깨끗하게 적용되었다고 가정하기 전에 결과를주의 깊게 검사 하는 것이 좋습니다 .
많은 사람들 git stash pop
이의 약자를 사용 합니다 git stash apply && git stash drop
. 괜찮아도 응용 프로그램이 엉망이 되어이 경로를 진행하지 않기로 결정하면 쉽게 숨길 수 없다는 것을 의미합니다. 그래서 만족할 경우에만 별도의 apply
, 결과를 검사하는 것이 좋습니다 drop
. (물론 이것은 또 다른 커피 휴식을 취하고하고 있던 일을 잊고, 돌아와서 잘못된 일을 할 수있는 또 다른 요점을 소개 하므로 완벽한 치료법은 아닙니다.)
1save
에서이 git stash save
새로운 은닉을 만들기위한 기존의 동사입니다. Git 버전 2.13은 새로운 동사를 도입하여 일관된 일관성을 유지 pop
하고 작성 명령에 더 많은 옵션을 추가했습니다. Git 버전 2.16은 이전 동사를 공식적으로 더 이상 사용하지 않습니다 (여전히 편집 할 때 최신 릴리스 인 Git 2.23에서 작동하지만).
자식 숨김 사용
git stash
변경 사항을 스택으로 푸시합니다. 다시 사용하고 싶을 때
git stash apply
개별 항목을 꺼낼 수도 있습니다. 은신처를 완전히 날려 버리려면 :
git stash clear
git stash
커밋되지 않은 변경 사항을 저장git stash list
저장된 커밋되지 않은 스 태쉬를 나열git stash apply stash@{x}
여기서 x는 0,1,2 ..가 될 수있는 스 태쉬 수 없습니다.
다음 중 하나를 수행 할 수 있습니다.
사용
git stash
또는 변경을 보류하는,다른 브랜치를 만들고 변경 사항을 커밋 한 다음 해당 브랜치를 작업 디렉토리에 병합하십시오.
참고URL : https://stackoverflow.com/questions/22082307/git-switch-branch-without-discarding-local-changes
'IT박스' 카테고리의 다른 글
자바 기본 생성자 (0) | 2020.06.14 |
---|---|
경고 : Assert 유형의 assertEquals 메소드는 더 이상 사용되지 않습니다. (0) | 2020.06.14 |
함수 호출 후 두 세트의 괄호 (0) | 2020.06.14 |
CSS로 읽기 전용 속성의 스타일을 지정하는 방법은 무엇입니까? (0) | 2020.06.14 |
package.json 버전을 자동으로 업데이트 (0) | 2020.06.13 |