2014-01-20 3 views
0

로컬 git 저장소를 특정 날짜로 복원하고 싶습니다. 복원을 통해, 그 날짜와 시간까지 발생한 모든 커밋과 이력을 보존하고 싶습니다.Git 저장소를 특정 날짜로 복원

그 날짜와 시간 이후에 수행 된 변경 사항과 커밋은 모두 괜찮습니다. (2014 년 1 월 1 일 오전 11시 30 분)

이것이 가능합니까?

+3

이것은 문자 그대로 버전 제어 소프트웨어로 수행 할 수있는 가장 기본적인 작업 중 하나입니다. git 튜토리얼을 읽는 것을 고려 했습니까? – Cairnarvon

+0

@Cairnarvon 나는'git reset --hard'를 사용했지만 브랜치 만 리셋하는 것처럼 보입니다. 동시에 모든 지점을 복원하고 싶습니다. 나는 git 튜토리얼을 보았지만, 완전한 repo 자체를 복원하는 데별로 도움이되지 않았다. 자문을 구할 수 있습니까? –

+0

실제로 이것을 자동화해야하는 지점이 너무 많습니까? 각 지점에 대한 reflog를 검토하고 지점이 그 날짜의 끝에 있었던 지점을 파악할 수 있어야합니다. – meagar

답변

1
git reset --hard '[email protected]{2014-01-01 11:30:00}' 

그러면 마스터 분기가 그 시간 전에 가장 가까운 커밋으로 재설정됩니다.

1

모든 참조를 업데이트하려면 각 ref에서 실행되는 명령을 생성 할 수있는 git for-each-ref을 사용할 수 있습니다. 그런 다음 그 결과를 사용자의 셸로 파이프 할 수 있습니다.

git for-each-ref --shell \ 
    --format="git update-ref %(refname) %(refname)@{2014-01-01 11:30:00}" | sh 

이와 같은 명령을 실행할 때마다 문제가 발생할 경우 저장소를 복원 할 수 있도록 백업이 있어야합니다. 또한 파이프를 사용하지 않고 한 번 시도하여 sh 명령을 실행하고 그들이 합리적으로 보이는지 확인하십시오.

관련 문제