git add와git ls-files의 ignore와other 옵션을 이해

4304 단어 Gittech
git ls-files를 배울 기회가 있기 때문에 총괄해 봅시다.

git ls-files 소개


ls-files 명령은staged의 인덱스 파일을 표시하는 명령입니다
이게 뭔지 생각할지도 모르지만, 주로 git add 이후의 서류들을 가리킨다.

원래 git add는

git add 제출 전 작업
실제로 무엇을 하고 있는지 말하자면git가 관리할 수 있는 곳에 대상의 파일을 놓아두세요.
파일을 만든 후 git는 *untracked (직역 추적 불가) * 상태에서 파일을 확인합니다.
실제 터치로 test된 파일을 만든 후 git status한 것은 다음과 같다.
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)

test

nothing added to commit but untracked files present (use "git add" to track)
c1r2s2% 
Untracked files에서test라는 파일이 있음을 알 수 있습니다.
이를 진행git add함으로써git가 관리할 수 있는 장소인 정착구역으로 이동할 수 있다.
이것도 전문 용어stagedにインデックスする라고도 부른다.
무대에 올라야 한다는 것을 깨달았다면(git가 보고 있는 무대) 이해하기 쉬울 것이다.
$ git add test
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

new file:   test
이로써 Changes to be committed는 서류가 제출될 예정 서류가 되었다.
제출한 예정 파일 =git의 감시 대상 파일입니다.
참고로 test의 출력에도 기록되어 있지만 입력git status을 하면 테스트 파일은 unstage가 되고 원래의 untracked 상태로 돌아갑니다.

git ls-files

git reset HEAD test 알아도 원래대로 돌아가면 git add 무대 구역에 존재하는 문서를 열람한다는 뜻이다.
참고로 ls는 git ls-files의 줄임말로 디렉터리에 존재하는 내용을 목록화한다는 뜻이다.
따라서 list directory contentsgit의 감시 대상인 디렉터리에 존재하는 파일만 표시합니다.목록을 열람할 수 없으니 주의해라.git ls-files 제출/누른 파일도 표시됩니다.제출한 파일 등도 디버그 영역에 존재하기 때문에 표시됩니다.

git ls-files --other


--other도 -o에서 실행 가능
다음은 옵션의 이야기입니다.
other는git ls-files에 표시된 이외의 내용을 표시하는 명령입니다.
어쨌든 untracked 파일을 표시합니다.
따라서 아까 예시한test 파일을 표시하려면 입력git ls-files을 통해 표시할 수 있습니다git reset HEAD test.
그리고gitignore에 기재된untracked 파일도 이 명령으로 표시할 수 있습니다

git ls-files-고성능 <옵션>


-- ignore도 -i로 수행할 수 있다
ignore 옵션은 장정 영역에 무시된 파일만 표시하는 명령입니다.
여러 옵션에서 객체가 무시되는 파일을 지정할 수 있습니다.
선택 항목은 여기에 있습니다.
https://git-scm.com/docs/git-ls-files#Documentation/git-ls-files.txt--xltpatterngt
여기 보세요git ls-files --other.
공식은 다음과 같다.
Add the standard Git exclusions: .git/info/exclude, .gitignore in each directory, and the user’s global exclusion file.
즉, --exclude-standard에 기재된 파일 형식이나 각 디렉터리에 존재하는 .git/info/exclude에 기재된 파일 또는 사용자가 배제 대상이 되는 파일이다.
.git/info/exclude의 내용은 기본적으로 아무것도 쓰지 않습니다.
$ cat .git/info/exclude
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
제외하고 싶은 서류 등이 있으면 추기하는 방식.gitignore에 기재된 문서에 관하여 대상은 각각의 .gitignore에 기재된 문서들을 참조한다.
만약 사용자가 배제된 파일을 독립적으로 배제된 설정의 파일로 삼는 등 일반적이라면 신경 쓸 필요가 없다.
즉, .gitignore에 세 개의 파일이 표시됩니다.
따라서 개인 설정 등이 없으면 ignore 옵션을 통해 참조할 수 있는 파일은
gitignore에 기재된 파일만

주의점


단, git ls-files --ignored --exclude-standard에 기재된 파일은dd가 될 수 없습니다.그런 구조니까.
이유는gitignore의 구조를 참조하십시오.
https://qiita.com/anqooqie/items/110957797b3d5280c44f
따라서 ignore 옵션을 사용할 때 --other와 함께 사용합니다.
한 마디로 하면 출력.gitignore에 기재된 파일의 명령은 다음과 같다..gitignore

겸사겸사 말씀드리겠습니다.


ignore 옵션을 개별적으로 사용하는 방법도 있습니다.
이것은dd 후staged 상태의 파일을 git ls-files -io --exclude-standard에 추가하는 방법입니다.
이렇게 하면.gitignore 참조할 수 있습니다.
그나저나 gitignore는push에 걸리지 않으려는 파일을 추가해야 하지만 이 경우git ls-files -i --exclude-standard에 기재돼도commiit/push를 할 수 있기 때문에 주의해야 한다.
대상 파일을 unstaged로 진행하면dd를 진행할 수 없습니다.

좋은 웹페이지 즐겨찾기