힘내 : “현재 지점에 없습니다.” 변경 사항을 유지하면서 지점으로 돌아갈 수있는 쉬운 방법이 있습니까? 때 많이

그래서 저장소에서 몇 가지 작업을 수행했으며 커밋하려고 할 때 현재 어느 지점에도 있지 않다는 것을 알고 있습니다.

이것은 서브 모듈로 작업 할 때 많이 발생하며 해결할 수는 있지만 프로세스가 번거롭고 더 쉬운 방법이 있어야한다고 생각했습니다.

변경 사항을 유지하면서 지점으로 돌아갈 수있는 쉬운 방법이 있습니까?



답변

커밋하지 않은 경우 :

git stash
git checkout some-branch
git stash pop

다음 이후에 커밋하고 변경하지 않은 경우 :

git log --oneline -n1 # this will give you the SHA
git checkout some-branch
git merge ${commit-sha}

추가 작업을 수행 한 후 수행 한 경우 :

git stash
git log --oneline -n1 # this will give you the SHA
git checkout some-branch
git merge ${commit-sha}
git stash pop

답변

이것은 나를 도왔다

git checkout -b newbranch
git checkout master
git merge newbranch
git branch -d newbranch

답변

git checkout master

결과는 다음과 같습니다.

Warning: you are leaving 2 commits behind, not connected to
any of your branches:

1e7822f readme
0116b5b returned to clean django

If you want to keep them by creating a new branch, this may be a good time to do so with:
git branch new_branch_name 1e7822f25e376d6a1182bb86a0adf3a774920e1e

이제 해봅시다 :

git merge 1e7822f25e376d6a1182bb86a0adf3a774920e1e

답변

여기 다른 길을 떠나

git branch newbranch
git checkout master
git merge newbranch

답변

또는 기본 분리 된 헤드 상태가 아닌 분기를 체크 아웃하도록 서브 모듈을 설정할 수 있습니다.

추가하기 위해 편집 :

한 가지 방법은 -b 플래그와 함께 서브 모듈을 추가 할 때 서브 모듈의 특정 분기를 체크 아웃하는 것입니다.

git submodule add -b master <remote-repo> <path-to-add-it-to>

또 다른 방법은 하위 모듈 디렉토리로 가서 체크 아웃하는 것입니다.

git checkout master

답변

이 상황에서 끝나는 한 가지 방법은 원격 지점에서 리베이스를 수행 한 후입니다. 이 경우 새로운 커밋은 가리 키지 HEADmaster가리 키지 않습니다. 다른 브랜치를 리베이스하기 전의 위치를 ​​가리 킵니다.

다음 master을 수행 하여이 커밋을 새로 만들 수 있습니다 .

git branch -f master HEAD
git checkout master

이 설정은 강제로 업데이트 master하고 HEAD(켜지 않은 상태 master)로 전환됩니다 master.


답변

최근 에이 문제가 다시 발생했습니다. 마지막으로 서브 모듈을 다루고 git에 대해 더 많이 알게 된 지 오래되었습니다. 커밋하려는 브랜치를 체크 아웃하는 것으로 충분하다는 것을 깨달았습니다. Git은 작업 트리를 숨기지 않아도 유지합니다.

git checkout existing_branch_name

새로운 지점에서 일하고 싶다면 다음과 같이하십시오.

git checkout -b new_branch_name

작업 트리에 충돌이 있으면 체크 아웃이 실패하지만 매우 드문 일이며 발생하면 숨기고 팝업하여 충돌을 해결할 수 있습니다.

수락 된 답변과 비교 하여이 답변은 어쨌든 실행하는 데 오래 걸리지 않는 두 명령의 실행을 절약합니다. 그러므로 나는 현재 받아 들여진 답보다 기적적으로 더 많은 찬사를 받거나 (또는 ​​적어도 가까운)이 대답을 받아들이지 않을 것이다.