SourceTree에서 커밋되지 않은 변경 사항을 버리는 방법은 무엇입니까?


81

저는 Git 환경을 처음 접했으며 Mac에서 SourceTree와 함께 BitBucket을 사용하고 있습니다. 지금하고 싶은 것은 마지막 커밋 이후의 변경 사항을 버리는 것입니다. 어떻게해야합니까? "변경 사항 취소"와 같은 것을 찾지 못했고 마지막 커밋에서 직접 가져 오는 것이 작동하지 않는 것 같습니다. GUI 또는 명령 줄로 수행 한 솔루션이 좋습니다. 감사합니다.


마지막 커밋을 취소하고 싶다는 뜻입니까? 또는 예를 들어 몇 가지 테스트 이유로 이전 커밋을 그대로두고 체크 아웃합니까?
Mohammad AbuShady 2013

1
@MohammadAbuShady 대답도 둘 다 아닌 것 같아요. 마지막 커밋 이후로 버리고 싶은 몇 가지 사항을 변경했습니다. 마지막 커밋을 되찾고 싶습니다.
goldfrapp04 2013

되돌리려는 커밋되지 않은 변경 사항이 있습니까?
Mohammad AbuShady 2013

여기에 대한 답변 중 어느 것도 내 Sourcetree 상단의 성가신 'Uncommitted changes'항목을 제거하는 데 도움이되지 않았습니다. 그리고 하나씩 폐기 할 준비되지 않은 파일이 너무 많았습니다. 여기에 대한 답이 작동했습니다. stackoverflow.com/questions/14075581/…
PVS

Unstaged Files 목록에서 항목을 마우스 오른쪽 버튼으로 클릭 할 때 상황에 맞는 메뉴 옵션이 혼동되었습니다. Discard(Shift + Ctrl 키 + R)와 Remove(Ctrl 키 + 델는) 것 같아요 Discard같은 변경 사항을 되돌아갑니다 git reset --hardRemove파일 및 단계가 삭제를 삭제합니다.
The Red Pea

답변:


61

나는 사용하고 싶다

git stash

커밋되지 않은 모든 변경 사항을 숨김 에 저장합니다 . 나중에 이러한 변경 사항을 취소 git stash drop하거나 git stash pop복원 하려는 경우 .

이것은 기술적으로 변경 사항을 폐기하는 "적절한"방법은 아니지만 (다른 답변과 의견이 지적했듯이).

SourceTree : 상단 바에서 'Stash'아이콘을 클릭하고 이름을 입력하고 생성합니다. 그런 다음 왼쪽 세로 메뉴에서 모든 숨김을 "표시"하고 오른쪽 클릭 메뉴에서 삭제할 수 있습니다. ST에서 모든 파일을 한 번에 버리는 다른 방법은 없을 것입니다.


7
모든 것을 버리고 싶다면 더 쉽게 할 수 있습니다git reset --hard HEAD
Mohammad AbuShady

4
@cocoanut 나는 이것이 stash기능 의 남용이기 때문에 내 대답이 "잘못된"것이라고 생각 합니다. Mohammad의 대답은 모든 변경 사항을 폐기하는 적절한 방법입니다.
Max

예, 또한 바로 가기가 어디 있는지 볼 수 없었기 때문입니다.
로베르토

3
마음이 바뀌면 변경 사항을 복원 할 수있는 마지막 기회를 제공하므로이 방법을 좋아합니다. 나는 드물지만 reset --hard새로 시작하기 위해 변경 사항을 숨기고 나중에 필요하지 않다고 결정하면 나중에 보관함을 삭제합니다.
Max

이 방법은 버전이 지정되지 않은 새 파일을 삭제하지 않았습니다. 이 경우 Roberto의 reset 및 clean 사용 방법이 더 잘 작동했습니다.
Gabriel Jensen

141

의 위에 SourceTree 에 대한 , 바로 원하는 파일 폐기로합니다 (에서 클릭 파일 작업 트리의 목록)를 선택 리셋 .

의 위에 SourceTree 에 대한 윈도우 , 바로 원하는 파일 폐기로합니다 (에서 클릭 작업 복사본 변경의 목록), 선택 취소를 .

자식 , 당신은 간단하게 할 거라고 :

git reset --hard 버전이 지정된 파일의 변경 사항을 무시합니다.

git clean -xdf무시 된 파일 ( 옵션)을 포함하여 새 ( 추적되지 않은 ) 파일 을 삭제 x합니다. d추적되지 않은 디렉토리를 제거 f하고 강제하는 것입니다.


9
왼쪽 패널에서 전체 "Working Copy"를 마우스 오른쪽 버튼으로 클릭 (또는 Cmd + Shift + R) ;-)
Geo

14
동일한 명령이 Mac과 Windows에 대해 다른 이름을 가지고 있다는 사실이 놀랍습니다. Git GUI (명령 줄과 비교)가 이미 충분히 혼란스럽지 않은 것처럼.
NSTJ

감사! 나는이 ;-) 정답으로 투표해야한다고 생각
에르난 Arber을

@NSTJ : 동의합니다 ... git 도구와 관련하여 "reset"및 "discard"와 같은 용어에 일관된 정의를 할당 할 가능성에 대한 자신감을 상당히 흔들어줍니다. 즉, 광범위하게 동의 할 것으로 예상 할 수있는 정의입니다.
LarsH

7

준비되지 않은 파일에서 오른쪽에있는 세 개의 점을 클릭합니다. 클릭하면 팝업 메뉴가 나타납니다.Discard file .


2
파일 수가 적 으면 괜찮지 만 파일이 많으면 어떻게 될까요?
Itai Spector

4

네, 제 질문이 이미 질문 제목에 답변되어 있음을 알았습니다.

파일을 언 스테이징하려면

git reset HEAD /file/name

그리고 파일의 변경 사항을 취소하려면

git checkout -- /file/name

폴더 안에 파일 배치가있는 경우 전체 폴더를 실행 취소 할 수 있습니다.

git checkout -- /folder/name

이러한 모든 명령은 git status

여기에 더미 저장소를 만들고 3 가지 가능성을 모두 나열했습니다.

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   test
#
# 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:   test2
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       test3

3

sourcetree GUI에서 작업 디렉토리를 클릭하고 삭제하려는 파일을 마우스 오른쪽 버튼으로 클릭 한 다음 삭제를 클릭합니다.


2

다음과 같이하십시오.

  • 클릭 commit
  • CMD+A원하는 것을 눌러 모두 선택delete or discard
  • Right click 삭제하려는 선택된 커밋되지 않은 파일
  • Remove드롭 다운 목록에서 선택

1

좋습니다. 간단한 Windows sourcetree에서 macOS에서도 잠시 동안 살펴 보았습니다.

소스 트리 에서 개별 파일 또는 모두를 삭제할 수있는 숨겨진 팝업이 표시되는 동안 Command + Shift + R을 클릭하십시오 ! 왜 이것이 숨겨져 있습니까? 우리는 모를 것입니다 ..하지만 작동합니다 ! [여기에 이미지 설명 입력] 1

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.