[git] 마스터 브랜치로 변경할 때 오류 : 체크 아웃시 로컬 변경 사항을 덮어 씁니다.

이 질문은 유사하다 이 하나 , 그러나 더 구체적인.

두 개의 분기 ( stagingbeta) 가있는 프로젝트가 있습니다.

에서 개발 staging하고 master분기를 사용하여 버그를 수정합니다. 따라서 스테이징 작업 중 오류가 표시되면 master분기로 변경합니다 .

git checkout master

그리고 물건을하십시오 :

git add fileToAdd
git commit -m "bug fixed"

그런 다음 두 분기와 병합합니다.

git checkout staging
git merge master
git checkout beta
git merge beta

작업 트리에 다른 파일이 있는지는 중요하지 않습니다.

하지만 이제 분기 로 변경하려고 master하면 오류가 발생합니다 .

error: Your local changes to the following files would be overwritten by checkout:
src/Pro/ConvocationBundle/Controller/DefaultController.php
Please, commit your changes or stash them before you can switch branches.
Aborting

스테이징 영역에서 파일을 제거해야한다고 생각했습니다.

git reset HEAD src/Pro/ConvocationBundle/Controller/DefaultController.php

하지만 같은 오류가 발생합니다. 내가 할 경우 git status내가 얻을No changes to commit



답변

파일을 수정하고 전환하려는 분기에도이 파일에 대한 변경 사항이있을 때 오류가 나타납니다 (최근 병합 지점에서).

내가보기에 당신의 옵션은-커밋 한 다음 추가 변경 사항으로이 커밋을 수정하는 것입니다 ( pushed 가 아닌 한 git에서 커밋을 수정할 수 있습니다 ). 또는-숨김 사용 :

git stash save your-file-name
git checkout master
# do whatever you had to do with master
git checkout staging
git stash pop

git stash save변경 사항을 포함하는 숨김을 생성하지만 커밋이나 분기와 관련이 없습니다. git stash pop최신 숨김 항목을 현재 분기에 적용하여 저장된 변경 사항을 복원하고 숨김에서 제거합니다.


답변

같은 문제가 발생하여 해결했습니다.

git checkout -f branch

그리고 그 사양은 다소 명확합니다.

-f, –force

분기 전환시 인덱스 또는 작업 트리가 HEAD와 다른 경우에도 진행하십시오. 이것은 로컬 변경 사항 을 버리는 데 사용 됩니다.

색인에서 경로를 체크 아웃 할 때 병합 해제 된 항목에 대해 실패하지 마십시오. 대신 병합되지 않은 항목은 무시됩니다.


답변

로컬 변경 사항을 커밋하지 않으려면 브랜치를 강제로 체크 아웃 할 수 있습니다.

git checkout -f branch_name


답변

같은 문제가 발생하여 해결했습니다.

git checkout -f 브랜치

글쎄, -f스위치 조심해 . -f스위치 를 사용하면 커밋되지 않은 변경 사항이 손실됩니다 . 를 사용하는 것이 도움이되는 사용 사례가있을 수 있지만 -f대부분의 경우 stash변경 한 다음 switch분기를 원할 수 있습니다 . stashing절차는 위에서 설명한다.


답변

현재 브랜치에서 커밋하고 다른 브랜치로 체크 아웃 한 다음 마지막으로 해당 커밋을 선택합니다 (병합 대신).


답변

다른 지점을 확인하려고 할 때이 메시지가 표시되는 경우 :

my-mac:myGHProject ~$ git checkout other-branch
error: Your local changes to the following files would be overwritten by checkout:
    src/main/resources/reference.conf

즉, 체크 아웃 한 브랜치에 커밋해야하는 일부 변경 사항이 있거나 위의 대부분의 포인트에 따라 지우거나 숨겨야합니다. 20 번 중 19 번은 변경 사항을 커밋 할 가능성이 훨씬 더 높습니다.

my-mac:myGHProject ~$ git branch
  * my-local-branch
  * develop

my-mac:myGHProject ~$ git status
On branch my-local-branch
   Changes not staged for commit:
   (use "git add <file>..." to update what will be committed)
   (use "git checkout -- <file>..." to discard changes in working directory)
 modified:   src/main/resources/reference.conf

my-mac:myGHProject ~$ git add src/main/resources/reference.conf

my-mac:myGHProject ~$ git commit -m "updates on some config"
  [my-local-branch] updates on some config
  1 file changed, 131 insertions(+), 85 deletions(-)

이제 완료 했으므로 다른 브랜치를 확인하고 앞뒤로 쉽게 전환 할 수 있습니다.

my-mac:myGHProject ~$ git checkout other-branch

my-mac:myGHProject ~$ git status
  On branch other-branch

my-mac:myGHProject ~$ git checkout my-local-branch
  Switched to branch 'my-local-branch'

git push origin $ {branch} 명령을 실행할 때 올바른 브랜치에 있고 올바른 브랜치로 푸시하고 있는지 확인하세요. 참고 : 프로젝트를 Intellij에 직접 연결 한 경우 기본 창의 오른쪽 하단에서 분기를 변경 한 것을 확인할 수 있습니다.


답변