Merge 명령
merge 명령은 분기의 변경 내용을 다른 분기에 적용합니다.
참고
이 명령의 결과는 체크 인 작업을 수행할 때까지 Team Foundation 버전 제어 서버에 반영되지 않습니다. 자세한 내용은 보류 중인 변경 내용 체크 인을 참조하십시오.
필요한 권한
merge 명령을 사용하려면 대상을 포함하는 작업 공간 폴더에 대해 체크 아웃 권한이 허용으로 설정되어 있어야 하고 소스를 포함하는 작업 공간 폴더에 대해 읽기 권한이 허용으로 설정되어 있어야 합니다. 자세한 내용은 Team Foundation Server 권한을 참조하십시오.
tf merge [/recursive] [/force] [/candidate] [/discard]
[/version:versionspec] [/lock:none|checkin|checkout] [/preview]
[/baseless] [/nosummary] [/noimplicitbaseless] [/conservative] [/format:(brief|detailed)] [/noprompt] [/login:username,[password]] source destination
매개 변수
인수 |
설명 |
---|---|
versionspec |
/version 옵션에 C2와 같은 값을 제공합니다. Team Foundation에서 버전 사양을 구문 분석하여 범위 내에 있는 항목을 결정하는 자세한 방법은 명령줄 구문(버전 제어)을 참조하십시오. |
source |
병합 소스로 사용될 파일 또는 폴더를 지정합니다. |
destination |
병합 대상으로 사용될 파일 또는 폴더를 지정합니다. |
username |
/login 옵션에 값을 제공합니다. 사용자 이름 값을 DOMAIN\UserName 또는 UserName으로 지정할 수 있습니다. |
Option |
설명 |
---|---|
/recursive |
현재 디렉터리와 하위 폴더의 source 항목 사양을 일치시킵니다. |
/force |
이러한 변경 내용 중 일부 또는 모두가 이전에 병합되었더라도 병합 기록을 무시하고 지정한 변경 내용을 소스에서 대상으로 병합합니다. |
/candidate |
대상에 아직 병합되지 않은 상태로 소스에 있는 모든 변경 집합의 목록을 인쇄합니다. 이 목록에는 아직 병합되지 않은 변경 집합 ID와 해당 변경 집합에 대한 기타 기본 정보가 포함되어 있습니다. |
/discard |
병합 작업을 수행하지 않고 병합 기록을 업데이트하여 병합이 수행되었는지를 추적합니다. 특정 병합에 사용되지 않도록 변경 집합을 취소합니다. |
/version |
선택적 병합의 경우 이 옵션은 대상에 병합해야 하는 범위를 지정합니다. 가져오기 병합의 경우 이 매개 변수는 병합되지 않은 모든 변경 내용을 병합해야 하는 버전을 지정합니다. 선택적 병합의 경우 버전 범위는 병합될 변경 집합의 시작점과 끝점을 나타냅니다. 예를 들어 버전 4~6을 병합할 경우 변경 집합 4, 5, 6이 병합됩니다. |
/lock |
잠금 형식을 지정하거나 항목에서 잠금을 제거합니다. 자세한 내용은 잠금 형식 이해을 참조하십시오. 잠금 옵션
|
/preview |
병합의 미리 보기를 표시합니다. |
/baseless |
기본 버전 없이 병합을 수행합니다. 즉, 병합 관계가 없는 파일과 폴더를 병합할 수 있습니다. 기본 버전이 없는(baseless) 병합을 수행하면 병합 관계가 만들어지므로 이후부터는 기본 버전이 없는 병합을 수행할 필요가 없습니다.
참고
기본 버전이 없는 병합은 대상에서 파일을 삭제할 수 없습니다.이러한 변경을 통해 수동으로 수행할 수 있습니다.
|
/noimplicitbaseless |
Team Foundation이 두 개의 관련되지 않은 버전 제어 트리에서 상대 이름이 같은 두 항목 간에 기본 버전이 없는(baseless) 암시적 병합을 수행하지 않도록 지정합니다. |
/nosummary |
충돌, 오류 및 경고 요약이 생략됩니다. |
/noprompt |
사용자 입력을 요청하는 메시지를 표시하지 않습니다. |
/conservative |
한 분기를 다른 분기로 병합할 때 더 많은 충돌이 발생합니다. |
/format |
병합 충돌을 요약하는 형식을 지정합니다.
참고 출력에 충돌 요약이 있는 경우에만 이 옵션이 적용됩니다. /nosummary 옵션이 사용되거나 10개 미만의 충돌, 경고 및 오류를 발생시키는 경우 요약을 표시할 수 없습니다. |
/login |
Visual Studio Team Foundation Server에서 사용자를 인증할 사용자 이름과 암호를 지정합니다. |
설명
tf 명령줄 유틸리티의 merge 명령을 사용하여 기존 소스 분기의 변경 내용을 기존 대상 분기에 적용할 수 있습니다. 개별 수정 버전이나 전체 변경 집합을 대상 분기에 병합할 수 있습니다. 변경 내용을 소스 분기에서 대상 분기로 또는 대상 분기에서 소스 분기로 병합할 수 있습니다.
merge 명령을 사용하면 대상 분기에 마이그레이션되지 않은 소스 분기의 변경 내용을 쿼리할 수 있습니다. 또한, 특정 변경 내용이 소스에서 대상으로 병합되지 않고 더 이상 병합 작업 대상으로 표시되지 않도록 지정할 수 있습니다.
tf 명령줄 유틸리티를 검색하는 방법에 대한 자세한 내용은 Tf 명령줄 유틸리티 명령을 참조하십시오.
기본 버전이 없는 병합
기본 버전이 없는 병합을 사용하면 서로 직접 분기되지 않은 항목을 병합할 수 있습니다. 기본 버전이 없는 병합을 수행하려면 tf merge 명령을 사용해야 합니다. 기본 버전이 없는 병합을 수행하는 경우 Team Foundation에는 분기의 파일 관계에 대한 정보가 들어 있지 않습니다. 기본 버전이 없는 병합에서는 충돌을 수동으로 해결해야 합니다. 기본 버전이 없는 병합을 수행하고 모든 충돌을 해결하면 Team Foundation에서는 병합 기록을 작성하고 폴더와 파일 간에 관계를 설정합니다.
tf merge를 실행하는 경우 Team Foundation에서는 이전에 관련된 두 개의 버전 제어 트리에서 상대 이름이 같은 항목 간에 기본 버전이 없는 암시적 병합을 수행합니다. 예를 들어 관련된 분기인 $SRC\와 $TGT를 병합하려 할 수 있습니다. 이때 두 분기에는 모두 a.txt라는 관련되지 않은 파일이 들어 있습니다. tf merge를 실행하면 두 파일이 동일하고, FIPS 규격 암호화가 비활성화되어 있으며, 소스 파일이 대상의 다른 파일과 관련이 없는 경우 Team Foundation에서는 두 a.txt 파일 간의 관계를 설정합니다.
/noimplicitbaseless 옵션을 설정한 상태로 tf merge를 실행하는 경우 Team Foundation에서 두 분기를 병합하려고 하면 변경 내용을 체크 인할 때 두 a.txt 파일로 인해 네임스페이스 충돌이 발생합니다. 이러한 충돌을 해결하려면 파일 하나의 이름을 바꿔야 합니다.
예제
다음 예제에서는 MyFile_beta1에서 MyFile_RTM으로 병합되지 않은 변경 내용을 병합합니다.
c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive
다음 예제에서는 변경 집합 137을 branch2로 병합합니다.
c:\projects>tf merge /version:C137~C137 branch1 branch2 /recursive
다음 예제에서는 변경 집합 137의 모든 변경 내용을 branch2로 병합합니다.
c:\projects>tf merge /version:C137 branch1 branch2 /recursive
다음 예제에서는 branch1에서 branch2로 병합되지 않은 변경 집합의 목록을 인쇄합니다.
c:\projects>tf merge /candidate branch1 branch2 /recursive
다음 예제에서는 branch2에서 branch1로 다시 병합되지 않은 변경 집합의 목록을 인쇄합니다.
c:\projects>tf merge /candidate branch2 branch1 /recursive
다음 예제에서는 변경 집합 137을 branch2로의 병합 대상에서 제외합니다.
c:\projects>tf merge /discard /version:C137 branch1 branch2 /recursive