Git: 변경 사항을 임시로 저장하는 방법
"결정된". 마스터 뽑아주세요...
이 시나리오는 매우 익숙해야 합니다.
"You are coding an important feature.
Git status reveals a large number of uncommitted
changes.
As you test your feature, the app reports a nasty crash/bug/assertion on a
different module. As you are blocked from testing, you reach out to the owner.
The code owner informs you that he pushed a fix a few moments ago."
팀 환경에서 일했다면 위의 시나리오를 한 번 이상 경험했을 것입니다.
나는 확실히, 특히 1000개 이상의 일일 커밋이 있는 코드베이스에서 작업하고 있습니다(우리는 git을 버전 제어로 사용합니다).
글쎄, 당신은 무엇을 하시겠습니까? 가장 일반적인 단계는 마스터를 가져와 수정 사항을 검색하는 것입니다.
그래서 책상으로 돌아가서
git pull --rebase
를 실행합니다.I am a fan of git rebase. I think that using rebase makes git history so much cleaner and easier to maintain.
파일 변경 또는 커밋 목록을 가져오는 대신 터미널에서 다음 오류를 보고합니다.
❯ git pull
error: cannot pull with rebase: You have unstaged changes.
error: please commit or stash them.
번역: "아직 진행 중인 작업이 있고 엉망으로 덮어쓰고 싶지 않습니다.
당신의 변화. 업무를 맡거나 일시적으로 보류하십시오."
커밋되지 않은 변경 사항이 있으므로 마스터에서 가져올 수 없습니다.
변경 사항을 커밋하고 계속 진행할 수 있습니다.
단어 강조: commit - 저는 개인적으로 모든 커밋이
실행 가능하고 컴파일 가능하며 유지 관리 가능한 코드
( 그렇지 않으면
git commit
를 git save
로 이름을 바꿉니다 )문제로 돌아가서 더 쉬운 방법이 있습니다.
커밋되지 않은 변경 사항이 있는 동안 변경 사항을 가져오는 방법은 무엇입니까?
Git Stash 명령을 사용합니다.
Git Stash는 이러한 유형의 시나리오에서 탁월합니다.
(커밋할 준비가 되지 않은 상태에서 최신 코드 변경 사항을 가져와야 하는 경우
자신의 변경 사항).
git stash
는 일시적으로 보류할 수 있는 git 명령입니다.또는 커밋되지 않은 변경 사항을 제쳐 두십시오.
그런 다음 로컬 복사본을 자유롭게 업데이트할 수 있습니다.
그리고 보관함을 터뜨려 중단한 부분부터 즉시 계속할 수 있습니다.
시나리오로 돌아가서 다음을 사용하여 git stash를 실행합니다.
git stash -u
-u 기호는 선택 사항이지만 매우 편리합니다. 포함하도록 git stash에 지시합니다.
새 파일( git stash untracked files ).
이제 깨끗한 작업 트리가 남았습니다. 바라건대,
git pull --rebase
는일하다.
중단한 부분에서 계속하려면
git stash pop
를 사용하십시오.git stash pop
이것은 작업 디렉토리에 최신 숨김을 표시합니다.
그게 다야 로컬 변경 사항을 커밋하지 않고 성공적으로 마스터를 가져왔습니다.
단 3개의 명령으로.
"rebase.autostash"를 사용한 자동화
나는 당신에 대해 모르지만 매번 3 개의 명령을 작성하는 것은 피곤합니다.
그렇다면 "git pull"이 자동 숨김 및 보류 중인 변경 사항을 표시할 수 있습니까? 예.
3가지 명령을 모두 순서대로 실행하는 특별한 git 별칭을 만들 수 있습니다.
그러나 Git version 2.7 이후,
스태싱을 자동화하는 새로운 전역 구성 플래그( rebase.autostash )가 도입되었습니다. 놀라운!
기본적으로 이 플래그는 false로 설정됩니다. 다음을 실행하여 전역적으로 활성화합니다.
git config --global rebase.autostash true
이제
git pull --rebase
실행할 때마다 로컬 변경 사항이 자동으로 숨겨집니다.그리고 다시 튀어 올랐다. 꽤 깔끔한.
마무리
마스터를 당기는 사이에 끼일 때 Git stash는 시나리오에서 빛납니다.
더러운 작업 복사본을 가지고
(특히 상사가 와서 즉시 수정을 요구하는 순간에).
rebase.autoStash
와 함께 사용하면 매일 git 경험이 부드럽고 쉽습니다.마지막으로 git-stash documentation page 방문을 적극 권장합니다.
git stash의 다양한 모드에 대해 더 알고 싶다면.
Reference
이 문제에 관하여(Git: 변경 사항을 임시로 저장하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sufiyanyasa/git-how-to-save-your-changes-temporarily-b5l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)