2011-01-28 4 views
73

저는 지회 (즉, design)에서 일하고 있으며 몇 가지 변경을했습니다. 그러나 모두 삭제하고 저장소 버전과 일치하도록 재설정해야합니다. 나는 git checkout design이 그것을 할 것이라고 생각했지만, 나는 단지 내가 지점 (design)에 이미 있다고 말했고 나는 3 개의 수정 된 파일을 가지고 있다고 말한다.분기에 대한 모든 변경 사항을 취소하는 방법은 무엇입니까?

원격 서버에서 변경된 내용을 버리고 분기를 가져 오는 방법은 무엇입니까?

답변

133

참고 : CAN NOT UNDO this.

ALL 지점과 마스터에 최선을 다하고하지 않은 로컬 변경 사항을 취소합니다 git checkout -f이보십시오. 당신은 당신이 design에서 어떤 변화를 원하고 확실히 그냥 원격의 일치하지 않는 경우 마지막

47

자식이 당신을 도울 수을 --hard 재설정 지점, 당신은 또한 단지 지점을 삭제하고 다시 만들 수 있습니다 :

# Switch to some branch other than design 
$ git br -D design 
$ git co -b design origin/design   # Will set up design to track origin's design branch 
+5

또는'git reset -hard HEAD ^' – deadfish

+10

'git reset -hard HEAD ^'가 실제로 받아 들여지는 대답이어야합니다. OP는 다른 지점에 대해 묻지 않았습니다 ... – bphilipnyc

+2

나는 이것을 시도했는데, 나는 그것이 내 마지막 커밋 이후 모든 것을 삭제했다고 생각합니다. 단지 마지막 커밋이 아닙니다. –

16

를 저지하기 때문에 멀리 모든 것을 던져하려는 경우

+5

도 있습니다 : git checkout design; git reset - hard origin/design – user37078

+0

브랜치를 삭제하기 전에 커밋도하겠다. – Asarluhi

+0

이것은 받아 들여진 응답이어야한다. –

7

@Will는 git immersion 정말 좋은 간단한 자식 튜토리얼입니다. 그것은 다음과 같은 경우에 대한 변경을 취소하는 방법을 보여줄 것입니다 : unstaged, staged 및 committed. 실험실 소스 루트에서

+2

나는 1 년 후에 git immersion을했다고 말하고 싶다. 오우! 나는이 일을 너무 일찍 끝내야했다. – Will

10
git diff master > branch.diff 
git apply --reverse branch.diff 
2

14-18 : git reset ./ HEAD <--un-stage any staged changes git checkout ./ <--discard any unstaged changes

1

로컬 브랜치의 변경 사항을 취소하려면, 당신은 자식 숨김 명령을 사용하여 이러한 변경 사항을 숨길 수 있습니다. "some_name"저장

자식 숨겨 놓은

변경 사항을 저장하고 원하는 경우, 나중에 사람들을 검색 할 수 있습니다 또는 삭제할 수 있습니다. 이렇게하면, 커밋되지 않은 코드가없는 지사와 git pull을 사용하여 메인 브랜치에서 최신 코드를 가져올 수 있습니다.

관련 문제