이 질문은 유사하다 이 하나 , 그러나 더 구체적인.
두 개의 분기 ( staging
및 beta
) 가있는 프로젝트가 있습니다.
에서 개발 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
답변
파일을 수정하고 전환하려는 분기에도이 파일에 대한 변경 사항이있을 때 오류가 나타납니다 (최근 병합 지점에서).
내가보기에 당신의 옵션은-커밋 한 다음 추가 변경 사항으로이 커밋을 수정하는 것입니다 ( push
ed 가 아닌 한 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에 직접 연결 한 경우 기본 창의 오른쪽 하단에서 분기를 변경 한 것을 확인할 수 있습니다.