Eclipse에서 svn으로 잘못된 변경 사항 롤백


81

Subversion 저장소에 몇 가지 잘못된 변경 사항을 적용했다고 가정 해 보겠습니다. 그런 다음 유지하고 싶은 좋은 변경 사항을 적용합니다.

Eclipse에서 나쁜 변경 사항을 롤백하고 좋은 변경 사항을 유지하는 가장 쉬운 방법은 무엇입니까? 잘못된 변경과 관련된 파일이 좋은 변경과 관련된 파일과 동일하지 않다고 가정합니다. 나쁜 변경과 동일한 파일에 대해 좋은 변경이 이루어지면 상황이 어떻게 변경됩니까?

주로 Eclipse 플러그인 (Subclipse 또는 Subversive)을 통해이 작업을 수행하는 방법을 찾고 있지만 명령 줄 명령도 흥미 롭습니다.

답변:


30

이 작업을 수행하는 데는 두 가지 선택이 있습니다.

Quick and Dirty는 ctrl프로젝트 탐색기보기에서 파일 (사용 )을 선택 Replace with...하고 마우스 오른쪽 단추로 클릭 한 다음에서 Latest from Repository또는 일부 Branch버전 에서 사용자에게 가장 적합한 옵션을 선택합니다 . 해당 파일을 가져온 후 수정합니다 (공백을 사용하거나 무언가를 수정하면 호출하고 커밋하여 최신 개정판을 만듭니다).

더 깔끔한 방법은 Merge팀 메뉴에서 선택 하고 실제 개정판에서 이전 버전을 복구하는 데 도움이되는 마법사를 탐색하는 것입니다.

두 명령 모두 명령 줄에 해당하는 항목이 있습니다. svn revertsvn merge.


1
Repository의 최신 항목이 잘못 체크인되었으므로 어디에서 도움이 될지 모르겠습니다. 이 외에도 eclipse는 여러 파일을 선택하는 경우 (아마도 최신 버전이 다르기 때문에) 멘션 옵션 만 사용할 수 있기 때문에이 문제를 해결하는 데 도움이되지 않습니다.
Macilias

79

Eclipse Ganymede (Subclipse)에서

잘못된 변경이 포함 된 프로젝트 / 파일을 선택하고 팝업 메뉴에서 다음을 선택합니다.

팀-> 역사보기

해당 프로젝트 / 파일과 관련된 수정 사항이 기록 탭에 표시됩니다.

"잘못된 변경 사항"이 적용된 개정판을 찾고 팝업 메뉴에서 다음을 선택합니다.

수정본 X에서 변경 사항 되돌리기

이렇게하면 잘못된 개정 내에서 수정 된 파일의 변경 사항이 잘못된 개정 이전의 개정과 병합됩니다.

여기에는 두 가지 시나리오가 있습니다.

  1. 해당 파일에 대한 변경 사항을 커밋하지 않은 경우 (잘못된 개정은 해당 파일의 마지막 개정) 단순히 잘못된 개정의 변경 사항을 제거합니다. 이러한 변경 사항은 작업 복사본에 병합되므로 커밋해야합니다.

  2. 해당 파일에 대한 일부 변경 사항을 커밋 한 경우 (잘못된 개정은 해당 파일의 마지막 개정이 아님) 충돌을 수동으로 해결해야합니다. readme.txt 파일이 있고 잘못된 개정 번호가 33이라고 가정합니다. 또한 개정 34에서 해당 파일에 대해 다른 커밋을 수행했습니다. 개정 33에서 변경 사항 되돌리기 를 선택 하면 작업 복사본에 다음이 표시됩니다.

readme.txt.merge-left.r33- 잘못된 개정

readme.txt.merge-right.r32- 잘못된 개정 전

readme.txt.working- 작업 복사본 버전 (커밋되지 않은 변경 사항이없는 경우 r34에서와 동일)

원본 readme.txt는 충돌로 표시되고 일부 마커 (<<<<<<< .working 등)가있는 병합 된 버전 (잘못된 개정의 변경 사항이 제거 된 위치)을 포함합니다. 잘못된 개정에서 변경 사항을 제거하고 그 이후의 변경 사항을 유지하려면 마커를 제거하기 만하면됩니다. 그렇지 않으면 위에서 언급 한 3 개의 파일 중 하나에서 원본 파일로 내용을 복사 할 수 있습니다. 무엇을 선택하든 완료되면 갈등을

팀-Mark Resolved

임시 파일이 제거되고 파일이 변경된 것으로 표시됩니다. 1에서와 같이 변경 사항을 커밋해야합니다.

이것은 svn 저장소의 개정 내역에서 개정을 제거하지 않습니다. 잘못된 개정의 변경 사항이 제거 된 새 개정을 만들었습니다.


14

한 번에 하나의 파일을 수행하려면 Eclipse SVN 플러그인이 설치되어 있다고 가정하고 파일의 내역보기로 이동할 수 있습니다. "팀-> 이력보기"

히스토리보기에서 해당 파일의 최신 버전을 찾아 마우스 오른쪽 단추로 클릭하고 "콘텐츠 가져 오기"를 선택하십시오. 그러면 현재 버전이 해당 버전의 콘텐츠로 바뀝니다. 그런 다음 모든 사항을 수정하면 변경 사항을 커밋 할 수 있습니다.


6

Subversive를 사용하는 Eclipse에서 :

프로젝트> 팀> 병합을 마우스 오른쪽 단추로 클릭하십시오.

병합 창에서 정상적으로 되돌리려는 수정본을 선택하고 "반전 된 병합"확인란도 활성화합니다.

정상적으로 병합합니다.



1

svnbook에는 Subversion을 사용하여 후속 개정에서 발생하는 변경 사항에 영향을주지 않고 특정 개정에서 변경 사항을 되돌릴 수있는 방법에 대한 섹션이 있습니다.

http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo

Eclipse를 많이 사용하지는 않지만 TortoiseSVN에서는 로그 대화 상자에서이 작업을 수행 할 수 있습니다. 되돌리려는 개정판을 마우스 오른쪽 버튼으로 클릭하고 "이 개정판에서 변경 사항 되돌리기"를 선택하기 만하면됩니다.

"잘못된 변경 사항"을 되돌리려는 파일이 후속 개정판에서 "좋은 변경 사항"을 갖고있는 경우 프로세스는 동일합니다. "잘못된"개정의 변경 사항은 "좋은"개정의 변경 사항을 그대로두고 되돌려 지지만 충돌이 발생할 수 있습니다.


0

나는 같은 문제가 있지만 CleanUp eclipse 옵션이 작동하지 않습니다.

1) TortoiseSVN 설치
2) Windows 탐색기로 이동하여 프로젝트 디렉토리를 마우스 오른쪽 버튼으로 클릭합니다.
3 선택 정리 옵션 (잠금 해제 옵션 확인)

작동합니다.

이것이 누군가를 돕기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.