Programing

Mercurial (HG)은 특정 파일 만 커밋

crosscheck 2020. 7. 20. 07:38
반응형

Mercurial (HG)은 특정 파일 만 커밋


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

있다

hg commit -I thefile.foo

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


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()"

자동 추가 동작을 끄고 Git처럼 Mercurial을 작동시키는 설정은 없습니다. 그러나 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를 실제로 사용하지는 않습니다.


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

많은 파일을 커밋하고 일부 파일 만 제외하려는 경우 사용하는 -X것이 더 편리합니다.

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

hg commit file_1 file_2
hg commit -X file_3

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

이 스택 오버플로 질문 에서 제안한 것처럼 가장 간단한 방법은 다음과 같습니다 hg shelve.

참고 URL : https://stackoverflow.com/questions/8188605/mercurial-hg-commit-only-certain-files

반응형