다음을 통해 공유


Rollback 명령(Team Foundation 버전 제어)

이 명령을 사용하면 하나 이상의 변경 집합 효과를 하나 이상의 버전 제어 항목으로 롤백할 수 있습니다. 이 명령은 항목의 버전 기록에서 변경 집합 항목을 제거하지 않습니다. 대신, 이 명령은 사용자가 지정하는 변경 집합의 효과를 무시하는 보류 중인 변경 집합을 작업 영역에 만듭니다.

필요한 권한

명령을 사용하려면 읽기, 체크 아웃체크 인 권한이 허용으로 설정되어 있어야 합니다. 자세한 내용은 Team Foundation Server 권한을 참조하십시오.

tf rollback /toversion:VersionSpec ItemSpec [/recursive] [/lock:none|checkin|checkout] [/version:versionspec] [/keepmergehistory] [/login:username,[password]] [/noprompt]

tf rollback /changeset:ChangesetFrom~ChangesetTo [ItemSpec] [/recursive] [/lock:none|checkin|checkout] [/version:VersionSpec]
[/keepmergehistory] [/noprompt] [/login:username,[password]]

매개 변수

인수

설명

ChangesetFrom~ChangesetTo

이 인수를 /changeset 옵션에 사용하여 롤백할 변경 집합을 지정할 수 있습니다. 다음과 같은 방법으로 변경 집합을 지정할 수 있습니다.

  • 단일 변경 집합

    예를 들면 /changeset:C11와 같은 형식입니다.

  • 변경 집합 범위입니다.

    예를 들면 /changeset:C7~C20와 같은 형식입니다.

  • 날짜

    예를 들면 /changeset:D09/30/09와 같은 형식입니다.

  • 날짜 범위입니다.

    예제:/changeset:D09/23/09~D10/07/09

  • 최근 변경 집합

    예: /changeset:Tip 또는 /changeset:T

ItemSpec

이 인수를 사용하여 롤백하려면 항목을 하나 이상 지정합니다. /toversion 옵션을 사용하는 경우 이 인수를 지정해야 합니다.

Team Foundation이 항목 사양을 구문 분석하는 방법에 대한 자세한 내용은 명령줄 구문(버전 제어)을 참조하십시오.

참고참고
Itemspec 인수를 두 개 이상 지정할 수 있습니다.

VersionSpec

/version 옵션 및 /toversion 옵션에 대해 사용자가 제공한 값입니다.

이 인수를 /toversion 옵션에 사용하여 파일을 특정 변경 집합의 상태로 되돌릴 수 있습니다. 다음 방법으로 버전을 지정할 수 있습니다.

  • 단일 변경 집합

    예를 들면 /toversion:C32와 같은 형식입니다.

  • 날짜(자정)

    예를 들면 /toversion:D06/19/09와 같은 형식입니다.

  • 날짜와 시간입니다.

    예제: /toversion:D06/19/09T14:32

  • 레이블입니다.

    예를 들면 /toversion:LTestLabel와 같은 형식입니다.

  • 현재 디렉터리에 매핑되는 작업 영역의 버전입니다.

    예를 들면 /toversion:W와 같은 형식입니다.

  • 특정 작업 영역의 버전

    예를 들면 /toversion:WResolveRIConflicts;AKerry와 같은 형식입니다.

Team Foundation이 versionspecs를 구문 분석하는 방법에 대한 자세한 내용은 명령줄 구문(버전 제어)을 참조하십시오.

Option

설명

/changeset

이 인수를 사용하여 롤백하려는 특정 변경 집합을 하나 이상 지정합니다.

/keepmergehistory

이 옵션은 롤백하는 변경 집합 중 하나 이상이 branch 또는 merge 변경을 포함하는 경우에만 효과가 있습니다. 나중에 동일한 소스와 동일한 대상 간에 병합하여 롤링하는 변경을 제외하려는 경우 이 옵션을 지정합니다.

자세한 내용은 예제: /keepmergehistory 옵션을 참조하십시오.

/lock

모든 관련 변경 내용의 롤백을 완료할 때까지 다른 사용자가 체크 인이나 체크 아웃하는 것을 방지하려면 이 옵션을 지정합니다. 자세한 내용은 잠금 형식 이해을 참조하십시오.

잠금 옵션

  • 없음

    기본값. 잠금이 적용되지 않습니다. 롤백하는 파일이 잠겨 있으면 이 옵션은 잠금을 제거합니다.

  • Checkin

    항목을 체크 인을 수행하여 잠금을 해제할 때까지 잠급니다. 잠금을 제거할 때까지 다른 사용자는 지정한 항목을 체크 아웃할 수 있지만 잠긴 파일에 수정 버전을 체크 인할 수 없습니다. 이미 잠겨 있는 파일을 잠글 수 없습니다.

  • Checkout

    체크 인을 수행하여 잠금을 해제할 때까지 다른 사용자는 잠긴 항목을 체크 인 또는 체크 아웃할 수 없습니다.

/login

이 옵션에 대한 자세한 내용은 명령줄 옵션를 참조하십시오.

/noprompt

이 작업 중에 나타날 대화 상자를 표시하지 않습니다.

/recursive

작업이 하위 폴더에 있는 항목을 포함하도록 하려면 이 옵션을 지정합니다.

/toversion

파일을 특정 변경 집합의 상태로 되돌리려면 이 옵션을 지정합니다. 이 옵션을 사용하면 사용자가 지정하는 버전 이후에 적용된 모든 변경 집합의 효과가 무효화됩니다.

/version

롤백할 파일과 폴더의 현재 버전을 지정합니다.

설명

tf rollback 명령은 사용자가 지정한 각 항목에 대해 지정할 각 변경 집합의 효과를 무시합니다. 다음 표에서는 작업이 각 유형의 변경 작업을 어떻게 부정하는지 보여줍니다.

이 변경을 롤백할 경우...

... 롤백 변경 및 다음과 같은 추가 변경 사항이

add, branch 또는 undelete

delete

edit

edit

encoding

encoding

rename/move

rename/move

delete

undelete

merge

현재 분기로 병합된 변경을 무시하는 변경입니다.

다음 목록은 롤백 명령에서 발생하는 몇 가지 변경의 예를 제공합니다.

  • add 변경이 발생한 변경 집합을 롤백하는 경우 롤백 작업은 rollback 변경 및 delete 변경을 일으킵니다.

  • edit 변경이 발생한 변경 집합을 롤백하는 경우 롤백 작업은 변경 집합 521의 edit 변경에 포함된 변경을 무시하는 rollback 변경 및 edit 변경을 일으킵니다.

  • 변경 집합 132에서는 $/BranchB/File1.txt에서 $/BranchA/File1.txt로 병합됩니다. 해당 병합에 포함된 변경 내용이 변경 집합 92 및 104의 edit를 포함하고 있습니다. 변경 집합 162에서 변경 집합 132를 롤백하면 rollback 변경 및 edit 변경이 $/BranchB/File1.txt에 적용되어 변경 집합 92 및 104의 편집 변경을 무시합니다.

종료 코드

tf rollback 명령을 실행한 후 다음 표에 종료 코드가 나타납니다.

종료 코드

설명

0

작업이 모든 항목을 성공적으로 롤백했습니다.

1

작업이 하나 이상의 항목을 성공적으로 롤백했지만 하나 이상의 항목을 롤백할 수 없었습니다.

100

작업은 모든 항목을 롤백할 수 없습니다.

예제

다음 예제에서는 해당 변경 집합 변경된 모든 항목의 변경 집합 23의 효과를 부정합니다.

c:\workspace> tf rollback /changeset:C23

다음 예제에서는 a.txt 파일에서 변경 집합 23의 효과를 부정합니다.

c:\workspace> tf rollback /changeset:C23 a.txt

다음 예제에서는 a.txt 내용을 변경 집합 23을 사용하여 체크 인된 버전 일치하도록 변경합니다.

c:\workspace> tf rollback /toversion:C23 a.txt

다음 예제는 2009년 8월 31일 자정 이전에 적용한 마지막 변경 집합과 일치하도록 OurTeamProject의 내용을 변경합니다.

c:\workspace> tf rollback /toversion:D08/31/2009 /recursive $/OurTeamProject/

예: /keepmergehistory 옵션

분기 또는 병합 변경을 포함하는 변경 집합을 롤백할 때 대개 같은 소스와 같은 대상 사이에 이러한 변경을 포함하도록 향후 병합을 원합니다. 그러나 같은 소스와 같은 대상 간에 향후 병합을 수행하여 과거의 병합 작업에 포함되었던 변경 집합은 제외하고 싶으면 /keepmergehistory 옵션을 사용할 수 있습니다.

예를 들어, 다음과 같은 경우 이 명령을 사용할 수 있습니다.

  1. 2009년 6월 30일, $/BranchA/에서 $/BranchB/로 모든 항목의 전체 병합을 수행합니다.

    c:\workspace> tf merge $/BranchA $/BranchB
    

    변경 집합 292의 일부로 이 병합을 체크 인합니다.

  2. 7월에 $/BranchA/Util.cs에 여러 변경을 수행합니다. 이러한 변경 사항은 변경 집합 297, 301 및 305에 포함됩니다.

  3. 2009년 8월 1일 $/BranchA/Util.cs를 $/BranchB/Util.cs에 병합합니다.

    c:\workspace> tf merge $/BranchA/Util.cs $/BranchB/Util.cs
    

    변경 집합 314의 일부로 변경을 체크 인합니다. 이 연산의 결과, 변경 집합 297, 301 및 305에서 편집한 내용이 이제 $/BranchA/Util.cs에도 적용됩니다.

  4. 일주일 후면 $/BranchA/Util.cs에서 편집한 내용이 $/BranchB/Util.cs에 적합하지 않다는 것을 깨닫게 됩니다. 롤백 명령을 사용하여 이러한 변경을 무시할 수 있습니다. 롤백 명령을 사용하여 merge 변경 또는 branch 변경을 롤백할 때 결정을 합니다.

    • 7월에 $/BranchA/Util.cs를 변경한 내용을 향후 병합을 위해 $/BranchB/Util.cs에 다시 적용하려는 경우 다음 명령을 입력해야 합니다.

      c:\workspace> tf rollback /changeset:314
      
    • 7월에 $/BranchA/Util.cs를 변경한 내용을 향후 병합을 위해 $/BranchB/Util.cs에 다시 적용하지 않으려는 경우 다음 명령을 입력해야 합니다.

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. 몇 주 후에 $/BranchA/를 $/BranchB로 병합합니다.

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • /keepmergehistory 옵션이 누락된 경우 merge 변경은 변경 집합 297, 301 및 305를 포함하여 변경 집합 292 이후로 $/BranchA/Util.cs에 적용된 모든 변경 집합을 $/BranchB/Util.cs에 적용합니다. 즉, 향후 병합은 rollback 변경을 취소할 수 없습니다.

    • /keepmergehistory 옵션이 포함된 경우 병합 작업은 변경 집합 297, 301 및 305를 제외하고 변경 집합 292 이후로 $/BranchA/Util.cs에 적용된 모든 변경 집합을 $/BranchB/Util.cs에 적용합니다. 즉, 향후 병합은 롤백 변경을 취소할 수 없습니다. 따라서 BranchA에 대한 콘텐츠가 BranchB의 콘텐츠와 일치하지 않을 수 있습니다.

참고 항목

참조

Merge 명령

개념

명령줄에서만 사용 가능한 작업(Team Foundation 버전 제어)

기타 리소스

Tf 명령줄 유틸리티 명령