Mercurial (hg)은 특정 파일 만 커밋합니다.


119

Mercurial에서 특정 파일 만 커밋하려고합니다. 변경 사항을 커밋하려고 할 때마다 자동 추가 기능이있는 hg 때문에 모든 파일을 커밋하려고합니다. 그러나 특정 파일이 아직 "준비"되지 않았기 때문에 원하지 않습니다.

있다

hg commit -I thefile.foo

그러나 이것은 하나의 파일에만 해당됩니다. 나에게 더 좋은 방법은 Git에서와 같이 자동 추가를 끌 수 있다면 것입니다. 이게 가능해?


5
레코드 확장자를 사용 하시겠습니까? 또는 명령 줄에서 파일을 지정할 수 있습니다hg ci foo bar baz
tonfa

4
@tonfa, 답변으로 당신의 코멘트를 다시 게시
안드레이 Dziahel을

게시물을 훼손하지 마십시오.
Glorfindel

왜 그렇게 좋은 질문을 훼손하는거야?
Praveen Kumar Purushothaman

답변:


155

tonfa는 다음과 같이 명령 줄에서 파일을 지정할 수 있습니다.

$ hg commit foo.c foo.h dir/

그게 효과가 있고 그게 제가 항상하는 일입니다. --include찾은 플래그를 사용할 수도 있으며 다음 과 같이 여러 번 사용할 수 있습니다.

$ hg commit -I foo.c -I "**/*.h"

당신은 심지어 사용할 수 있습니다 파일 세트 를 하여 커밋 할 파일 을 선택할 수도 있습니다.

$ hg commit "set:size(1k - 1MB) and not binary()"

자동 추가 동작을 끄고 Mercurial이 Git처럼 작동하도록하는 설정은 없습니다. 그러나 mq 확장 이 중요 할 수 있습니다. 이것은 고급 확장이지만 할 수 있습니다.

$ hg qnew feature-x     # create new patch
$ hg qrefresh -s foo.c  # add a file to the current patch
$ hg qrefresh -s bar.c  # add another file to the patch
$ hg qfinish -a         # convert applied patches to normal changesets

하지만 명령 줄에 파일 이름을 지정하는 것만으로도 충분하다고 생각하기 때문에이 목적으로 MQ를 실제로 사용하지는 않습니다.


어떤 "자동 추가 동작"동작입니까? hg가 파일 자동 추가에 사용 되었습니까? 이제 명시 적으로 수행해야하므로 추적되지 않습니다.
mpen

1
@mpen 나는 그가 수정 된 파일을 다음 커밋에 수동으로 추가해야하고 일부 수정 된 파일을 커밋하지 않은 상태로 둘 수있는 git과 달리 gh가 커밋에 모든 수정 된 파일을 자동으로 추가하는 방법을 의미한다고 생각합니다.
simpleuser

24

몇 개의 파일을 커밋하고 다른 많은 파일을 제외하려면 커밋 할 파일을 명시 적으로 나열합니다. -I파일 대신 패턴을 사용하려는 경우에만 필요합니다.

많은 파일을 커밋하고 몇 개의 파일 만 제외하려면 -X 것이 더 편리합니다.

예를 들어 "file_1", "file_2"및 "file_3"을 포함하는 저장소가 주어지면 다음은 동일하지만 후자는 입력하기가 더 쉽고 빠릅니다.

hg commit file_1 file_2
hg commit -X file_3

8

3.8 부터는hg commit --interactive 파일을 선택하는 데 사용할 수도 있습니다 (3.8 이전 에는 유사한 기능을 위해 crecord 확장자 를 사용할 수 있습니다 ). --interactive(또는 -i) 플래그를 사용하면 커밋에 포함 할 파일을 요청하는 HG의 원인이됩니다. 추가 보너스로 파일 내에 청크를 포함 / 제외 할 수도 있습니다.

다음은 인터페이스의 예입니다. 이것은 (실제로 crecord의) 오래된 스크린 샷이므로 인터페이스가 약간 변경되었습니다 (하지만 기본은 동일합니다). crecord 스크린 샷

해당 인터페이스를 얻으려면 curses 인터페이스를 활성화해야합니다. 단일 실행에 대해 hg commit --config ui.interface=curses --interactive또는 일반적으로 다음을 추가하여 수행 할 수 있습니다 .hgrc.

[ui]
interface = curses
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.