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 옵션에 사용하여 롤백할 변경 집합을 지정할 수 있습니다. 다음과 같은 방법으로 변경 집합을 지정할 수 있습니다.
|
ItemSpec |
이 인수를 사용하여 롤백하려면 항목을 하나 이상 지정합니다. /toversion 옵션을 사용하는 경우 이 인수를 지정해야 합니다. Team Foundation이 항목 사양을 구문 분석하는 방법에 대한 자세한 내용은 명령줄 구문(버전 제어)을 참조하십시오.
참고
Itemspec 인수를 두 개 이상 지정할 수 있습니다.
|
VersionSpec |
/version 옵션 및 /toversion 옵션에 대해 사용자가 제공한 값입니다. 이 인수를 /toversion 옵션에 사용하여 파일을 특정 변경 집합의 상태로 되돌릴 수 있습니다. 다음 방법으로 버전을 지정할 수 있습니다.
Team Foundation이 versionspecs를 구문 분석하는 방법에 대한 자세한 내용은 명령줄 구문(버전 제어)을 참조하십시오. |
Option |
설명 |
---|---|
/changeset |
이 인수를 사용하여 롤백하려는 특정 변경 집합을 하나 이상 지정합니다. |
/keepmergehistory |
이 옵션은 롤백하는 변경 집합 중 하나 이상이 branch 또는 merge 변경을 포함하는 경우에만 효과가 있습니다. 나중에 동일한 소스와 동일한 대상 간에 병합하여 롤링하는 변경을 제외하려는 경우 이 옵션을 지정합니다. 자세한 내용은 예제: /keepmergehistory 옵션을 참조하십시오. |
/lock |
모든 관련 변경 내용의 롤백을 완료할 때까지 다른 사용자가 체크 인이나 체크 아웃하는 것을 방지하려면 이 옵션을 지정합니다. 자세한 내용은 잠금 형식 이해을 참조하십시오. 잠금 옵션
|
/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 옵션을 사용할 수 있습니다.
예를 들어, 다음과 같은 경우 이 명령을 사용할 수 있습니다.
2009년 6월 30일, $/BranchA/에서 $/BranchB/로 모든 항목의 전체 병합을 수행합니다.
c:\workspace> tf merge $/BranchA $/BranchB
변경 집합 292의 일부로 이 병합을 체크 인합니다.
7월에 $/BranchA/Util.cs에 여러 변경을 수행합니다. 이러한 변경 사항은 변경 집합 297, 301 및 305에 포함됩니다.
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에도 적용됩니다.
일주일 후면 $/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
몇 주 후에 $/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의 콘텐츠와 일치하지 않을 수 있습니다.
참고 항목
참조
개념
명령줄에서만 사용 가능한 작업(Team Foundation 버전 제어)