Git의 비정상적인 변화를 어떻게 버리려면 어떻게합니까?


질문

 

인덱스가 아닌 작업 사본의 변경 사항을 어떻게 버리려면 어떻게합니까?


답변

 

현재 작업 디렉토리의 모든 비정상 파일의 경우 :

git checkout -- .

특정 파일 사용 :

git checkout -- path/to/file/to/revert

- 모호성을 제거하려면 (이는 인수 분리로 알려져 있습니다).

GIT 2.23 이후에,보다 구체적으로 사용하기를 원할 수 있습니다.

git restore .

묻다.

git restore path/to/file/to/revert

Git 스위치와 함께 오버로드 된 Git Checkout (여기에서 참조)을 대체하고 따라서 인수 무증함을 제거합니다.



답변

또 다른 빠른 방법은 다음과 같습니다.

git stash save --keep-index --include-untracked

당신은 그것에 대해 철저하고 싶지 않으면 --include-untracked를 포함 할 필요가 없습니다.

그런 다음 원하시는 경우 Git Stash Drop 명령으로 숨김을 삭제할 수 있습니다.



답변

완전한 솔루션이 다음과 같습니다.

git clean -df
git checkout -- .

Git Clean은 모든 untracked 파일을 제거합니다 (경고 : .gitignore에서 직접 언급 된 무시한 파일을 삭제하지는 않지만 폴더에 거주하는 무시 된 파일을 삭제할 수 있음).



답변

이렇게하면 현재 디렉토리의 현재 인덱스가 현재 디렉토리의 모든 변경 사항을 아래쪽으로 내려 놓습니다.

git checkout .

또는 인덱스에서 모든 파일을 체크 아웃하는 작업 트리 파일을 덮어 씁니다.

git checkout-index -a -f


답변

git clean -df

현재 디렉토리에서 시작하여 버전 컨트롤이 아닌 파일을 재귀 적으로 제거하여 작업 트리를 정리합니다.

-d : untracked 파일 외에도 추적되지 않은 디렉토리를 제거하십시오.

-f : 힘 (clean.requireforce 설정에 따라 필요하지 않을 수 있음)

Git을 실행하여 수동을 보려면 청소하십시오



답변

2019 업데이트

이제 하나의 추적 된 파일에서의 비정상적 인 변경 사항을 버립니다.

git restore <file>

현재 디렉토리 (재귀 적으로)의 모든 추적 된 파일에서 다음과 같습니다.

git restore .

리포지토리의 루트에서 후자를 실행하면 프로젝트의 모든 추적 된 파일에서 비정상적인 변경 사항을 삭제합니다.

메모

Git Restore는 2019 년 7 월에 도입되었으며 Git Checkout 명령의 분할의 일부로 버전 2.23에서 Branch에 대한 파일 및 Git 스위치에 대한 Git Restore에 릴리스되었습니다. Git Checkout은 여전히 익숙해 지므로 이전 답변이 완벽하게 유효합니다. 작업 트리의 비정상적인 변경 사항으로 Git 상태를 실행하면 이제 Git가 v2.23 이전에 사용 된 대신 git checkout - 대신에 삭제하는 데 사용할 수있는 git입니다. Git Checkout과 마찬가지로, 이는 추적 된 파일에서만 변경 사항 만 삭제합니다.따라서 Mariusz Nowak의 답변은 여전히 적용되며 untracked 파일을 포함하여 모든 끈적 끈적한 변경 사항을 삭제하려는 경우 추가 Git Clean -df를 제안 할 수 있습니다.

출처:https://stackoverflow.com/questions/52704/how-do-i-discard-unstaged-changes-in-git