2013-10-08 7 views
10

내 작업 디렉토리에서 파일을 수정하고 svn 업데이트를 수행했습니다. 업데이트는 충돌없이 수행되었습니다.svn 업데이트를 실행 취소하는 방법은 무엇입니까?

나는 작업 디렉토리 내용을 svn 업데이트 직전의 상태로 되돌릴 수 있기를 바란다.

이유는 공유 svn 저장소와 병행하여 로컬 git 저장소를 유지하기 때문입니다. svn 업데이트를하기 전에 로컬 변경을 커밋하는 것을 잊어 버렸습니다. 이제는 내 작업 디렉토리에 svn 업데이트로 인한 변경 사항과 혼합 된 로컬 변경 사항이 포함되어 있습니다. 내가 저지른다면, 모든 변화는 하나의 원자 변화로 나타날 것입니다. 나는 그들이 분리 되길 바랬다. 업데이트를 되돌리고 svn 업데이트 전에 가지고 있던 작업 디렉토리의 내용을 보존 할 수 있다면 그렇게 할 수 있습니다.

+0

내가 다른 방법으로 해결 가능 파일 및 개정 파일의 복사본이있을 것이다. 로컬 변경 사항은 업데이트의 영향을받지 않는 파일에 있습니다. 그래서 자식 단계 메커니즘 덕분에, 나는 단지 로컬로 수정 된 파일을 커밋 한 다음 두 번째 커밋에서 svn 업데이트로 수정 된 다른 모든 파일을 수정했습니다. 나는 운이 좋았다. – chmike

+0

네, 자식 단계가 탈출구입니다. 파일에 영향을 미쳤지 만'svn diff'와'git apply'를 사용하여 Subversion 변경 사항과 변경 사항을 분리 할 수 ​​있습니다. –

+1

두 경우 모두 미래에는'git-svn'을 사용하는 것이 좋습니다.그것은 가져 오기 및 내보내기 버전을 안정적으로 처리 할 수 ​​있으며 추가적으로 로컬 패치 큐로 사용할 수 있습니다 (로컬 브랜치에 여러 커밋을 할 수 있고 대화식 리베이스를 사용하여 일부만 밀어 넣기로 밀어 넣을 수 있습니다). –

답변

4

불가능합니다. 업데이트 전의 상태는 잊어 버렸습니다.

변경 사항을 구분하기 위해 git apply을 사용하여 색인에 적용하고 변경 사항을 커밋하고 모든 것을 커밋 (끌어 오기 변경) 할 수 있습니다.

이것은 응급 해결책입니다. 나중에 git-svn으로 전환하면 장래에 이런 종류의 문제를 처리 할 것을 권합니다.

2

"버전으로 업데이트"를 수행하면 로컬 파일을 안정 버전으로 변경 한 다음 다시 커밋 할 수 있습니다. 이 방법으로 모든 로컬 변경 사항을 잃게됩니다.

+4

모든 로컬 변경 사항을 잊어 버리고 싶었습니다. – chmike

+0

분명히 귀하의 경우, 로컬 변경 파일이 충돌하지 않는 경우,이 작업은 유용하지 않습니다. 그래서 운이 좋은거야! ;) 좋은 하루 되세요 –

0

이것은 Linux 사용자를위한 것입니다.

다음과 같은 개정이 있다고 가정합니다.

헤드 - 20 이전 수정 버전은 18, 17, 15, 14, 10, 9,8입니다.

src 디렉토리로 이동하십시오. svn merge -r 17:18 $ url

$ srl을 (를) 사용하십시오.

6

나는이 질문에 계속해서 대답하고 실제로 "svn 업데이트를 실행 취소하는 방법"에 대한 간단한 답을 포함하지 않습니다. 문제.

그래서 그냥 업데이트를 롤백 할 풀 수있는 경우에 다른 사람의 이익을 위해 :

이 먼저와 로그를 확인하십시오

svn log | less 

이 당신에게 수정 번호를 줄 것이다 (예 : 957)로 되돌아 가십시오. 그런 다음 :이 있다면 경우, 충돌이 업데이트 중에 발생

svn up -r 957 
+4

이 답변은 수정 된 작업 디렉토리의 경우를 무시합니다. –

+0

true @RobertPollak 그러나 질문 제목에 의해 제기 된 질문에 대답합니다. – ErichBSchulz

+0

Downvoting : 원래 질문에 답하지 않았으므로 맨 아래 문장에 수정 된 파일에 대한 참고 사항이 포함되어 있기 때문에 대답합니다. 이것은 다른 질문 "특정 리비전으로 업데이트하는 방법"에 대한 대답 일 것입니다. 수정 된 파일이 있고이 파일에 대한 언급이 없으면이 대답은 작동하지 않습니다. –

관련 문제