2012-08-14 4 views
9

변경 사항 삭제/Git을 사용하여 이전 커밋으로 되돌리기위한 여러 가지 방법을 보았습니다. 나는 보통 내 상황에 맞는 것을 알아낼 수 있지만, 그 과정에서 나는 다른 접근법으로 인해 혼란스러워했다. 가장 최근에 일부 파일 이름을 실행 취소하려고 시도했지만 아무리 열심히 노력해도 이전 버전의 파일을 계속 이전 버전으로 되돌릴 수 없었습니다.Git의 변경 사항을 취소하는 올바른 방법

나는 어떤 접근 방법을 사용해야하며 이유는 무엇인지 명확히하고 싶습니다. 다음은 몇 가지 접근 방식에 대한 이해입니다. 그 대답은 매우 맥락적일 수 있다는 것을 알고 있습니다. 그러나 나는 어떤 접근법이 어떤 문맥을 필요로 하는지를 분석하려고합니다.


1) 파일의 최신 버전을 체크 아웃하는 데 사용 git checkout -- .

  • 는 기존 파일을 덮어 쓸 가능성이 있지만, 이름 변경 또는 새 파일 삭제에 영향을 미치지 않습니다.

2) git stash save --keep-index는이를 완전히 삭제, git stash drop

  • 숨겨 놨다 커밋 파일 하였다. 유지하려는 변경 사항을 커밋하고 취소하려는 변경 사항을 커밋하지 않은 경우에 좋은 방법입니다. 마지막 커밋 이후

3) git reset --hard

  • 은 삭제 및 추가, 파일 이름 변경을 포함하여, 모든 것을 정리합니다.

이 내 옵션의 내 현재의 이해입니다. 내 설명에 어떤 변화가 있습니까? 또한 위의 명령 대신 git revert을 사용할 때는 확신이 없습니다.

원본 게시물 :

답변

9
git stash -u 

이 선호하는 방법입니다. 떨어 뜨리지 마라. 그들은 밀리지 않을 것이다. 당신이 발견 한 무엇인가를 중요하게 여긴다면, 다시 돌려 줄 수 있습니다.

다른 선택은 파괴적입니다.

되돌리기는 커밋이 도입 한 패치의 반대쪽에 적용되는 기록에 새로운 커밋을 추가합니다. 여기서 선택한 것은 작업 트리에서 아직 역사의 일부가 아닌 변경 사항으로 수행하려는 작업에 대한 것입니다. 되돌리기는 역사의 일부인 커밋 된 변경 사항을 나타냅니다.

+0

-u는 무엇을합니까? 나는 정말 필요없는 코드를 숨김 스택에 채우고 싶지 않습니다. –

+0

숨겨진 채우기에 대해 걱정하지 마십시오. '-u'는 추적 된 파일 외에 추적되지 않은 파일을 숨 깁니다. 리셋처럼 동작 할 수 있습니다. –

관련 문제