2012-05-15 2 views
6

git 저장소에서 과거의 특정 상태 (이전 커밋)로 재설정하려는 서브 디렉토리가 있습니다. 특정 하위 디렉토리에있는 파일에 대한 모든 커밋을 실행 취소 할 수 있습니까? 나는이 하위 디렉토리 내의 파일과 동시에 다른 곳에있는 파일에 변경 사항을 적용하는 커밋이 없다고 생각합니다. 그러나 이 아닌이 파일에 커밋을 남길 수 있다면이 디렉토리에이 있습니까?서브 디렉토리를 특정 과거 상태로 영구적으로 재설정합니다.

기록을 삭제하지 않아도됩니다. 이전 상태를 체크 아웃하고, 서브 디렉토리의 현재 내용을 제거하고, 기존 상태를 그대로 복사 및 커밋하는 것은 문제가되지 않습니다. 그러나 결국 더 우아한 (gitonic) 방법이있을 수 있습니다.

답변

10

git checkout의 기능을 하위 디렉토리에 적용하는 가장 간단한 방법입니다. 다음 단계 및 커밋 :

git checkout <old-SHA1> -- path/to/subdir 
git add -A path/to/subdir 
git commit -m "reverted files in path/to/subdir to what it was at <old-SHA1>" 
+0

예상대로 작동하지 않는 것 같습니다. 현재 버전에 있지만 이전 버전에는없는 파일은이 명령의 영향을받지 않지만'git reset --hard' (그러나'git reset --hard'는 하위 디렉토리에서 사용할 수 없습니다)와 함께 사용됩니다. – Ajedi32

1

을 당신이 취소 할 커밋을 모두 해결하는 경우, 당신은 그들을 다시 git revert을 사용할 수 있습니다 -했다 하나 또는 두 개의 커밋이 있다면이 가장 유용 할 것 말썽 꾸러기.

CharlesB's answer은 커밋이 많거나 커밋이 프로젝트의 다른 부분을 만지면 더 간단하게 접근 할 수 있지만 (실제로는 -n (자동 커밋하지 않음) 플래그를 사용하여 해결할 수 있습니다) 관심있는 변경 내용을 커밋)

관련 문제