개발관련/Git

현재 변경 사항을 Git의 다른 브랜치에 커밋하는 방법

Rateye 2021. 6. 26. 13:47
728x90
반응형

 

질문 : 현재 변경 사항을 Git의 다른 브랜치에 커밋하는 방법

때때로 작업 디렉토리를 약간 변경하고 이러한 변경 사항은 현재 분기와 다른 분기에서 커밋되어야한다는 것을 알고 있습니다. 이것은 일반적으로 새로운 것을 시도하거나 테스트를 수행하고 싶고 미리 새 분기를 만드는 것을 잊었을 때 발생하지만 마스터 분기에 더티 코드를 커밋하고 싶지는 않습니다.

그렇다면 커밋되지 않은 변경 사항 (또는 인덱스에 저장된 변경 사항)을 현재 분기와 다른 분기에 커밋하려면 어떻게해야합니까?

답변

다른 브랜치를 체크 아웃 한 다음 커밋하는 것을 제안하는 다른 답변은 로컬 수정이 주어지면 체크 아웃이 가능한 경우에만 작동합니다. git stash 의 가장 일반적인 사용 사례입니다.

git stash
git checkout other-branch
git stash pop

첫 번째 stash 은 변경 사항을 숨기고 (기본적으로 임시 커밋 만들기) 후속 stash pop 은 변경 사항을 다시 적용합니다. 이렇게하면 Git에서 병합 기능을 사용할 수 있습니다.

숨김을 팝하려고 할 때 병합 충돌이 발생하면 다음 단계는 충돌이 무엇인지에 따라 다릅니다. 숨겨진 모든 변경 사항이 실제로 다른 브랜치에 속하는 경우 단순히 정렬해야합니다. 이는 잘못된 브랜치에서 변경 한 결과입니다.

반면에, 당신이 정말로 엉망으로 만들고, 당신의 작업 트리에 두 가지 변경 사항이 혼합되어 있고 충돌이 원래 분기에서 다시 커밋하려는 것들에만있는 경우 일부 작업을 저장할 수 있습니다. . 평소와 같이이를 수행하는 방법에는 여러 가지가 있습니다. 다음은 충돌을 확인한 후 시작하는 것입니다.

# Unstage everything (warning: this leaves files with conflicts in your tree)
git reset

# Add the things you *do* want to commit here
git add -p     # or maybe git add -i
git commit

# The stash still exists; pop only throws it away if it applied cleanly
git checkout original-branch
git stash pop

# Add the changes meant for this branch
git add -p
git commit

# And throw away the rest
git reset --hard

또는 이것이 일어날 것이라는 것을 미리 깨닫는 경우 현재 브랜치에 속한 것을 커밋하십시오. 언제든지 돌아와서 해당 커밋을 수정할 수 있습니다.

git add -p
git commit
git stash
git checkout other-branch
git stash pop

물론이 모든 작업에 약간의 작업이 필요하다는 것을 기억하고 다음 번에는 bashrc 파일 의 PS1 환경 변수에 $(__git_ps1) 을 추가하여 프롬프트에 현재 브랜치 이름을 입력하여이를 피하십시오. (예를 들어 Bash 문서의 Git을 참조하십시오.)

출처 : https://stackoverflow.com/questions/2944469/how-to-commit-my-current-changes-to-a-different-branch-in-git
728x90
반응형