Programing

gitignore를 사용하지 않고 Git이 파일을 무시하도록하려면 어떻게해야합니까?

crosscheck 2020. 7. 19. 10:23

gitignore를 사용하지 않고 Git이 파일을 무시하도록하려면 어떻게해야합니까?


외부 이상한 제약으로 인해 .gitignore내 저장소를 수정할 수 없습니다 . 수정 이외의 파일과 디렉토리를 무시하는 방법이 .gitignore있습니까? 글로벌 구성과 같은 글로벌 솔루션이라도 모든 리포지토리에 적용됩니다.


gitignore 에 따르면 Git이 고려하는 다른 "무시 패턴 소스"에는 우선 순위가 있다는 것을 잊지 마십시오 .

  • 패턴을 지원하는 명령에 대해서는 명령 행에서 패턴을 읽습니다.
  • 경로와 동일한 디렉토리 또는 상위 디렉토리의 .gitignore 파일에서 패턴을 읽습니다. 상위 레벨 파일 (루트까지)의 패턴이 파일을 포함하는 디렉토리까지 하위 레벨 파일의 패턴으로 대체됩니다.
  • 패턴에서 읽을 $GIT_DIR/info/exclude.
  • 구성 변수에 의해 지정된 파일에서 패턴을 읽습니다 core.excludesfile.

마지막 두 가지는 문제에 대한 해결책이 될 수 있지만 다음과 같습니다.

  • 그들은 멀리 떨어진 저장소에 복제되지 않습니다
  • 다른 소스로 패턴을 재정의 할 수 있습니다.

(이 SO 질문 도 참조하십시오 )


다른 두 가지 솔루션에는 색인 업데이트 ( git update-index)가 포함됩니다.

그러나 다른 지점을 체크 아웃하거나을 방문하면 git pull"무시"상태가 재설정 될 수 있습니다. 따라서 다른 옵션은 다음과 같습니다.

이 둘의 차이점은 " Git-차이점 ' assume-unchanged'과 ' skip-worktree' "에 설명되어 있습니다.


수정 .git/info/exclude이 가능한 경우 동일한 규칙을 적용 할 수 있습니다. 그러나 해당 파일은 로컬 리포지토리에만 있습니다.


무시할 파일을 GIT에 알리는 세 가지 방법이 있습니다.

  • .gitignore 파일
  • $ GIT_DIR / .git / info / exclude
  • core.excludesfile설정 을 통해 지정된 파일

후자의 두 점은 문제를 해결할 수 있습니다.

자세한 내용은 gitignore (5)를 참조하십시오 .


저장소에 로컬 파일이 있고 하위 디렉토리 위치가 융통성이있는 경우 파일을 tracked_dir1/tracked_dir2/untracked_dir/넣은 후 다음 tracked_dir1/tracked_dir2/untracked_dir/.gitignore과 같은 내용 으로 with 를 추가 할 수 있습니다 .

*

$ cat > tracked_dir1/tracked_dir2/untracked_dir/.gitignore
*
<Ctrl+D>

비슷한 상황에 있었으므로 언급하지 않은 선호하는 솔루션을 추가하고 있습니다. git update-index --assume-unchanged이 경우 문제 는 추적되지 않은 파일에 대해서는 그렇게 할 수 없다는 것입니다. 당신은 말했다

저장소의 .gitignore를 수정할 수 없습니다.

변경 사항 .gitignore을 원점으로 푸시 할 수 없다는 것을 의미한다고 가정하겠습니다 . 즉 로컬에 비 추적 파일을 추가한다 할 수있는 경우라면 .gitignore, 다음 할 git update-index --assume-unchanged .gitignore로 변화되도록 .gitignore밀어되지 않습니다. 이제 추적되지 않은 파일을 무시하고 원격 .gitignore파일에 영향을 미치지 않습니다 .


추적 된 파일의 로컬 변경 사항을 무시하십시오. git update-index --assume-unchanged my-file.php

추적 된 파일의 로컬 변경 사항을 무시하십시오. git update-index --no-assume-unchanged my-file.php

출처: git help update-index

--[no-]assume-unchanged
           ...
           This option can be also used as a coarse file-level mechanism to ignore uncommitted changes in tracked
           files (akin to what .gitignore does for untracked files). Git will fail (gracefully) in case it needs to
           modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is
           changed upstream, you will need to handle the situation manually.

또 다른 방법:

  • 로컬 편집 .gitignore
  • 그때 git update-index --assume-unchanged .gitignore

https://help.github.com/articles/ignoring-files/#create-a-global-gitignore 프로젝트에서 메소드를 수정하는 대신 글로벌 gitignore 메소드를 사용할 수 있습니다

참고 URL : https://stackoverflow.com/questions/653454/how-do-you-make-git-ignore-files-without-using-gitignore