자식 : 분기를 전환하고 커밋하지 않고 변경 사항을 무시하십시오.
나는 git 브랜치에서 일하고 있었고 내 변경 사항을 커밋 할 준비가되었으므로 유용한 커밋 메시지로 커밋했다. 그런 다음 지킬 가치가없는 코드를 약간 변경했습니다. 나는 이제 가지를 바꾸고 싶지만 git은 나에게 준다.
오류 : "X"로 로컬 변경되었습니다. 분기를 전환 할 수 없습니다.
커밋하지 않고 지점을 변경할 수 있다고 생각했습니다. 그렇다면 어떻게 설정할 수 있습니까? 그렇지 않은 경우이 문제에서 어떻게 벗어날 수 있습니까? 커밋하지 않고 사소한 변경 사항을 무시하고 분기를 변경하고 싶습니다.
분기를 변경하려면 깨끗한 상태가 필요합니다. 지점 점검은 '더러운 파일'에 영향을 미치지 않는 경우에만 허용됩니다 ( 찰스 베일리 가 주석에서 언급 한 것처럼 ).
그렇지 않으면 다음 중 하나를 수행해야합니다.
- 현재 변경 사항을 숨기 거나
reset --hard HEAD
(사소한 변경 사항을 잃어 버릴 염려가 없다면) 또는checkout -f
분기를 전환 할 때 색인 또는 작업 트리가 HEAD와 다른 경우에도 진행하십시오. 이는 로컬 변경 사항을 버리는 데 사용됩니다.
또는 더 최근 :
- Git 2.23 (2019 년 8 월) 및 새로운 명령
git switch
:
git switch -f <branch-name>
(의-f
줄임말--force
,의 별칭--discard-changes
임)
색인 또는 작업 트리가 HEAD와 다른 경우에도 진행하십시오.
인덱스와 작업 트리가 모두 전환 대상과 일치하도록 복원됩니다.
이는 git switch -m <branch-name>
현재 분기와 작업 트리 내용 및 새 분기 사이에 3 방향 병합을 트리거하는와 다릅니다 . 진행중인 작업을 그다지 풀지 않습니다.
변경 사항을 취소하려면
git checkout -- <file>
git checkout branch
변경 사항을 유지하려면
git stash save
git checkout branch
git stash pop
글쎄, 그것은해야한다
git stash save
git checkout branch
// do something
git checkout oldbranch
git stash pop
따르다,
$: git checkout -f
$: git checkout next_branch
원격 브랜치를 병합했거나 로컬 커밋이 있고 원격 HEAD로 돌아가려면 다음을 수행해야합니다.
git reset --hard origin/HEAD
HEAD
단독으로 로컬 커밋 / 병합 만 참조합니다. 다시 설정을 변경하고 "저장소는 X 커밋이 앞서 있습니다." .
분기를 전환 할 때 Git도 변경 해야하는 파일을 변경했다면 허용하지 않습니다. 작업 변경 사항을 삭제하려면 다음을 사용하십시오.
git reset --hard HEAD
그런 다음 분기를 전환 할 수 있습니다.
재설정 및 숨김 후에도 추적되지 않은 파일이 있었기 때문에 이러한 답변 중 어느 것도 도움이되지 않았습니다. 나는해야했다 :
git reset --hard HEAD
git clean -d -f
변경 사항을 잃어버린 새 지점으로 전환 :
git checkout -b YOUR_NEW_BRANCH_NAME --force
기존 브랜치로 전환하면 변경 사항이 손실됩니다.
git checkout YOUR_BRANCH --force
터미널을 닫고 프로젝트가있는 폴더를 삭제 한 다음 프로젝트를 다시 복제하고 구성하십시오.
변경 사항을 유지하고 단일 행 명령으로 분기를 변경하려는 경우
git stash && git checkout <branch_name> && git stash pop
커밋되지 않은 변경 사항을 새 지점으로 이동
.gitconfig
이것에 대한 별칭을 만들었습니다 .
[alias]
spcosp = !"git stash push && git checkout \"$@\" && git stash pop --index #"
로 변경하려면 다음을 new-branch-name
사용하십시오.
git spcosp new-branch-name
커밋되지 않은 파일 및 인덱스 변경 사항은 유지됩니다.
쉬운 답변 :
지점을 강제로 체크 아웃하는 것입니다
git checkout -f <branch_name>
분기를 강제로 체크 아웃하면 git에게 현재 분기에서 변경 한 모든 내용을 삭제하고 원하는 분기를 체크 아웃하도록 지시합니다.
또는 커밋을 체크 아웃하는 경우
git checkout -f <commit-hash>
"커밋하지 않고 분기를 변경할 수 있다고 생각했습니다. 그렇다면 어떻게 설정할 수 있습니까? 그렇지 않은 경우이 문제에서 어떻게 벗어날 수 있습니까?"
그것에 대한 대답은 아니오 입니다. 문자 그대로 모든 변경 사항을 추적하고 각 노드 (즉, 커밋)는 최신 변경 사항을 최신 상태로 유지해야한다는 Git의 철학입니다. 물론 새로운 커밋을 만들었습니다.
변경 사항을 유지하기로 결정 했습니까?
그런 다음
git stash
원하는 브랜치에서 변경 사항을 해제하려면
git stash apply
변경 사항이 적용되지만 숨김 대기열에도 유지됩니다. 숨김 스택에 보관하지 않으려면 다음을 사용하여 팝하십시오.
git stash pop
그것은 apply
다음과 같습니다drop
'IT' 카테고리의 다른 글
==와! =는 상호 의존적입니까? (0) | 2020.03.18 |
---|---|
SQL Server에서 '설명 테이블'과 동일한 기능은 무엇입니까? (0) | 2020.03.18 |
WebSockets 프로토콜과 HTTP (0) | 2020.03.18 |
여러 인수를 사용하여 Angular.js 필터를 어떻게 호출합니까? (0) | 2020.03.18 |
xdebug var_dump를 가져 와서 전체 객체 / 배열을 표시하는 방법 (0) | 2020.03.18 |