문제

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

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

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

도움이 되었습니까?

해결책

이를 수행하려면 두 가지 선택이 있습니다.

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

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

두 명령 모두 해당 명령줄과 동일합니다. svn revert 그리고 svn merge.

다른 팁

Eclipse 가니메데(Subclipse)

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

팀 -> 기록 표시

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

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

개정 X의 변경 사항 되돌리기

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

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

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

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

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

readme.txt.merge-right.r32 - 나쁜 개정 전

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

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

팀 - 마크 해결됨

임시 파일이 제거되고 파일이 변경된 것으로 표시됩니다.1과 마찬가지로 변경 사항을 커밋해야 합니다.

이는 svn 저장소의 개정 기록에서 개정을 제거하지 않는다는 점에 유의하십시오.잘못된 개정의 변경 사항이 제거된 새 개정을 만들었습니다.

한 번에 1개의 파일을 수행하려면 Eclipse SVN 플러그인이 설치되어 있다고 가정하고 해당 파일에 대한 기록 보기로 이동할 수 있습니다."팀->기록 표시"

기록 보기에서 해당 파일의 마지막 좋은 버전을 찾아 마우스 오른쪽 버튼을 클릭하고 "콘텐츠 가져오기"를 선택합니다.그러면 현재 버전이 해당 버전의 콘텐츠로 대체됩니다.그런 다음 모든 문제를 해결한 후 변경 사항을 커밋할 수 있습니다.

Subversive를 사용하는 Eclipse에서:

프로젝트 > 팀 > 병합을 마우스 오른쪽 버튼으로 클릭하세요.

병합 창에서 정상적으로 되돌리려는 개정을 선택하고 "역 병합" ​​확인란도 활성화합니다.

평소처럼 병합하세요.

나는 이 주제에 관해 몇 개의 블로그 게시물을 썼습니다.Subclipse 중심의 것: http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html 그리고 명령줄 중심인 것: http://blogs.collab.net/subversion/2007/07/second-chances/

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

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

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

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

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

1) TortoiseSVN을 설치합니다.
2) Windows 탐색기로 이동하여 프로젝트 디렉터리를 마우스 오른쪽 버튼으로 클릭합니다.
3가지 CleanUp 옵션(Break Lock 옵션 확인)

작동합니다.

이것이 누군가에게 도움이 되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top