programing tip

git add * (별표) vs git add.

itbloger 2020. 8. 2. 17:39
반응형

git add * (별표) vs git add. (기간)


git을 처음 사용하고 git에 파일을 추가하는 방법에 대한 질문이 있습니다. 나는 사이의 차이에 대한 여러 유래의 질문에 발견 git add .하고 git add -a, git add --all, git add -A, 등 그러나 나는 무엇을 설명하는 장소 찾을 수 있었어요 git add *수행합니다. git add man page 도 보았지만 도움이되지 않았습니다. 대신에 사용하고 있는데 git add .동료가 이유를 물었습니다. 나는 대답이 없었다. 난 그냥 항상 사용했습니다 git add *.

인가 git add .git add *같은? 하나는 현재 디렉토리에서만 변경된 파일을 추가하고 다른 하나는 현재 디렉토리와 하위 디렉토리에서 (재귀 적으로) 파일을 추가합니까?

쇼 차이가 사이 다른 스택 질문 중 하나에 나와있는 좋은 차트있다 git add -A git add .git add -u하지만이없는가 git add *.

여기에 이미지 설명을 입력하십시오

참고 : 별표를 와일드 카드로 사용한다는 것이 무슨 의미인지 이해합니다 (지정된 확장자를 가진 모든 파일 추가). 예를 들어, git add *.html있는 모든 파일을 추가합니다 .html(그러나 무시 확장을 .css, .js등).

도와 주셔서 감사합니다!


add *이름이 점으로 시작하는 파일을 제외하고 현재 디렉토리에 모든 파일을 추가하는 것을 의미합니다. 이것은 쉘 기능이며 Git은 파일 목록 만 수신합니다.

add . 쉘에서 특별한 의미가 없으므로 Git은 전체 디렉토리를 재귀 적으로 추가합니다.이 디렉토리는 거의 동일하지만 이름이 점으로 시작하는 파일을 포함합니다.


*git의 일부가 아닙니다-쉘에 의해 해석되는 와일드 카드입니다. *현재 디렉토리의 모든 파일로 확장 된 다음 git에만 전달되어 모든 파일을 전달 add합니다. .현재 디렉토리 자체이며 git adding하면 디렉토리 와 그 아래의 모든 파일이 추가됩니다.


.에서 점 사용하는 것은 일반적으로 "현재 디렉토리"를 의미합니다.

*에서 별표를 사용하면 라는 기능 file-globbing이 사용됩니다. 예를 들어 bash에서 함수 glob()는 바로 그 일을하고 있습니다. glob ( man 7 glob)에 대한 맨 페이지 상태 :

기술

Long ago, in UNIX V6, there was a program /etc/glob that would expand 
wildcard patterns.  Soon afterward this became a shell built-in.
These days there is also a library routine glob(3) that will perform this 
function for a user program.

와일드 카드 일치

A string is a wildcard pattern  if it contains one of the characters '?', '*' or '['. 

글 로빙

Globbing is the operation that expands a wildcard pattern 
into the list of pathnames matching the pattern.

'?', '*'또는 을 포함하는 명령 줄의 모든 프로그램에 인수를 전달하면 '['먼저 globbing은 와일드 카드 패턴을 파일 목록으로 확장 한 다음 이러한 파일을 프로그램 자체에 대한 인수로 제공합니다.

사이의 차이를 의미 'git add .'하고 'git add *'명확하게 설명되어 데니스 :

git add파일 목록이 추가 될 것으로 예상합니다. 위의 예에서 쉘 은 각각 확장 *되거나 .결과를 git add에 대한 매개 변수로 제공합니다. 차이점은 git add .git을 사용하면 현재 디렉토리로 확장되는 반면 git add *파일 globbing은 트리거되고 점으로 시작하지 않는 모든 파일 및 디렉토리로 확장됩니다.


명확성을 기하기 위해 아래 표에 답을 입력했습니다.

여기에 이미지 설명을 입력하십시오

추가 노트 (@ reka18 의견에서 영감을 얻음) :

주 1. git add -Agit add -u명령은 추가 정제 (파일 이름에 대한 하위 디렉토리 또는 마스크 표시) 전체 작업 디렉토리 (또한 우리가 디렉토리의 작업 디렉토리에서 명령을 실행하는 경우)의 범위에서 작동 될 추가 매개 변수없이 수행.

2. 참고.하고 *각각 명령의 경로를 명확히 디렉토리 경로 (현재 디렉토리)와 와일드 카드입니다. 예를 들어, git add .or git add *명령이 작업 디렉토리의 일부 서브 디렉토리에서 실행되면 해당 조치는 전체 작업 디렉토리가 아닌이 서브 디렉토리 내에서만 사용됩니다.

주 3git add -Agit add -u명령을 상기 경로를 추가하거나, 예를 들면, 파일에 대한 마스크에 의해 정제 할 수있다 git add -A app/controllersgit add -u app\styles\*.

참고 URL : https://stackoverflow.com/questions/26042390/git-add-asterisk-vs-git-add-period

반응형