롤백 명령(Team Foundation 버전 제어)

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

TFVC(Team Foundation 버전 제어) tf rollback 명령을 사용하여 하나 이상의 버전 제어 항목에 대한 하나 이상의 변경 집합의 효과를 롤백할 수 있습니다. 이 명령은 항목의 버전 기록에서 변경 집합을 제거하지 않습니다. 대신, 이 명령은 지정한 변경 집합의 효과를 부정하는 작업 영역에서 보류 중인 변경 내용 집합을 만듭니다.

필수 조건

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

구문

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]]

매개 변수

인수

Argument

설명

<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 옵션을 사용하는 경우 이 인수를 지정해야 합니다.

TFVC가 항목 사양을 구문 분석하는 방법에 대한 자세한 내용은 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

TFVC가 구문 분석하는 versionspec방법에 대한 자세한 내용은 Team Foundation 버전 제어 명령 사용을 참조 하세요.

옵션

옵션

설명

/changeset

부정하려는 하나 이상의 특정 변경 집합을 지정하려면 이 옵션을 사용합니다.

/keepmergehistory

이 옵션은 롤백하려는 변경 집합 중 하나 이상이 분기 또는 병합 변경 내용을 포함하는 경우에만 적용됩니다. 롤백할 변경 내용을 제외하기 위해 동일한 원본과 동일한 대상 간에 향후 병합을 수행하려면 이 옵션을 지정합니다.

/lock

연결된 모든 변경 내용을 롤백할 때까지 다른 사용자가 항목을 검사 또는 검사 수 없도록 하려면 이 옵션을 지정합니다. 자세한 내용은 잠금 유형 이해(Understand lock types)를 참조 하세요.

잠금 옵션:

  • None. 기본값. 잠금이 적용되지 않습니다. 롤백하는 파일이 잠긴 경우 이 옵션은 잠금을 제거합니다.
  • Checkin. 검사 수행하여 잠금을 해제할 때까지 항목을 잠급 수 있습니다. 다른 사용자는 지정된 항목을 검사 수 있지만 잠금이 제거될 때까지 수정 버전에서 검사 수 없습니다. 이미 잠긴 파일은 잠글 수 없습니다.
  • Checkout. 검사 수행하여 잠금을 제거할 때까지 사용자가 잠긴 항목을 검사 또는 검사 수 없습니다.

/login

이 옵션에 대한 자세한 내용은 명령이 작동하는 방식을 수정하는 옵션 사용을 참조 하세요.

/noprompt

이 옵션을 사용하여 이 작업 중에 표시되지 않는 대화 상자를 표시하지 않습니다.

/recursive

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

/toversion

특정 변경 집합에서 파일을 해당 상태로 되돌리기 이 옵션을 지정합니다. 이 옵션을 사용하면 지정한 버전 이후 적용된 모든 변경 집합의 효과를 부정합니다.

/version

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

설명

tf rollback 명령은 지정한 각 항목에 대해 지정하는 각 변경 집합의 효과를 부정합니다. 다음 표에서는 작업이 각 종류의 변경을 부정하는 방법을 나열합니다.

롤백된 변경 유형 롤백 변경 유형
추가, 분기 또는 삭제 취소 delete
edit edit
encoding encoding
rename/move rename/move
delete undelete
merge 변경하면 현재 분기에 병합된 변경 내용이 무효화됩니다.

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

  • 추가 변경이 발생한 변경 집합을 롤백합니다. 롤백 작업을 수행하면 롤백 변경 및 삭제 변경이 발생합니다.

  • 편집 변경이 발생한 변경 집합 521을 롤백합니다. 롤백 작업을 수행하면 변경 집합 521의 편집 변경 내용이 무효화되는 롤백 변경 및 편집 변경이 발생합니다.

  • 변경 집합 132에서 $/BranchA/File1.txt$/BranchB/File1.txt 병합했습니다. 해당 병합의 변경 내용에는 변경 집합 92 및 104의 편집 변경 내용이 포함되었습니다. 변경 집합 162에서는 변경 집합 132를 롤백하여 변경 집합 92 및 104의 편집 변경 내용을 부정하는 $/BranchB/File1.txt 롤백 변경합니다.

종료 코드

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

종료 코드 설명
0 작업이 모든 항목을 롤백했습니다.
1 작업이 하나 이상의 항목을 성공적으로 롤백했지만 하나 이상의 항목을 롤백할 수 없습니다.
100 작업에서 항목을 롤백할 수 없습니다.

예제

다음 예제에서는 해당 변경 집합에서 변경된 모든 항목에 대한 변경 집합 23의 영향을 부정합니다.

c:\workspace> tf rollback /changeset:C23

다음 예제에서는 변경 집합 23이 파일 a.txt 미치는 영향을 부정합니다.

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 편집한 내용도 이제 $/BranchB/Util.cs 적용됩니다.

  4. 일주일 후, 7월에 $/BranchA/Util.cs 편집한 내용이 $/BranchB/Util.cs 적합하지 않다는 것을 알게 됩니다. 이 rollback 명령을 사용하여 이러한 변경 내용을 부정할 수 있습니다. 명령을 사용하여 rollback 병합 변경 또는 분기 변경을 롤백하는 경우 결정해야 합니다.

    • 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 하면 변경 집합 297, 301 및 305를 포함하여 변경 집합 292 이후 $/BranchA/Util.cs 적용된 모든 변경 집합을 Util.cs $/BranchB/Util.cs 병합 변경 내용이 적용됩니다. 즉, 병합은 롤백 변경 내용을 실행 취소합니다.

    • 롤백할 때 옵션을 포함 /keepmergehistory 하면 변경 집합 292 이후 $/BranchA/Util.cs 적용된 모든 변경 집합을 Util.cs $/BranchB/Util.cs 병합 작업이 적용되며 변경 집합 297, 301 및 305는 제외됩니다. 즉, 병합은 롤백 변경 내용을 실행 취소하지 않습니다. 따라서 BranchA의 콘텐츠가 BranchB의 콘텐츠와 일치하지 않을 수 있습니다.