git ignore vs. exclude vs. assume-unchanged
나는 이것에 대한 문서를 여러 번 읽었습니다. 어쩌면 나일 수도 있고 문서는 더 명료 할 수 있습니다.
http://git-scm.com/docs/gitignore
https://help.github.com/articles/ignoring-files
이,이 주제에 대한 많은 주석은 "색인화", "커밋 됨", "추적 됨"이라는 단어를 다소 느슨하게 사용하는 것이보다 명확하게 발음됩니다.
나의 현재 (허용되는 제한적) 이해 :
일치하는 파일
.gitignore
은 추적되지 않습니다. (이전에 추적되었을 수 있지만) 이는git status
변경된 것으로 향후 목록 에-display되지 않음을 의미합니다 . 그러나 변경 사항은 여전히 원격 저장소와 동기화 됩니다. "추적"되지 않은 "즉, 파일은 여전히"인덱싱 "입니다..gitignore
파일이 디렉토리에 있기 때문에 파일 자체의 버전을 있습니다.일치하는 파일
.git/info/exclude
도 "추적"되지 않습니다. 또한 없던 파일은 원격으로 동기화되지 않은 다른 사용자가 어떤 형태로도 볼 수 없습니다. 전체 파일은 단일 사용자의 편집기 또는 워크 플로와 관련된 파일이어야합니다..git
거기 에 있기 때문에exclude
파일 자체의 버전을 없습니다.assume-unchanged
실행 된 파일 도git status
또는git diff
. 이는exclude
이러한 파일이 "인덱싱"되거나 "추적"않는다는 점에서되지 와 유사합니다 . 그러나 이전에 커밋 된 파일의 마지막 버전은assume-unchanged
저장소의 모든 사용자에게 계속 표시됩니다.
내 질문 :
위의 해석이 맞습니까? 저를 수정하십시오.
파일이 이미 커밋에있는 경우 일치하는
.exclude
것과 실행 하는 것 사이의 기능적 차이점은assume-unchanged
무엇입니까? 한 가지 접근 방식을 다른 접근 방식보다 선호하는 이유는 무엇입니까?내 기본 사용 사례는 된 파일의 diff 정렬을 피하고 싶지만 저장되는 파일과 동기화되기 원이 소스 파일입니다. 의지
gitignore
'D 파일은 여전히 밀어? 명명되지 않은 경우 배포 된 파일의 최종 배포를 관리하는 방법은 무엇입니까?
미리 감사드립니다.
나는 이것이 공식 문서보다 더 명료하게 설명하고 "공식적인"조언으로 받아 들일 수 있다고 생각하기 때문에 Junio Hamano (Git의 관리자)가 보낸이 이메일 답변 을 받아 들일 것입니다.
.gitignore 및 .git / info / 제외는 그런 것을 호출하는 두 개의 UI입니다. in-tree .gitignore는 프로젝트 구성원간에 공유됩니다 (즉, 프로젝트에서 작업하는 모든 사람은 거기에서 무시 패턴과 일치하는 경로를 엉망으로 처리해야합니다). 반면에 .git / info / exclude는 개인적인 무시 패턴을위한 것입니다 (즉, 프로젝트를 작업하는 동안 패턴을 거친다고).
변경되지 않은 가정은 그대로 남용되어 있습니다. "파일 시스템 작업이 느리다는 것을 알고 있습니다.이 비트로 경로를 변경하지 않을 것입니다. Git에 약속 할 것입니다. 이렇게하면 Git에서 매번 변경했음을 확인할 필요가 없습니다. 'git status'출력을 요청합니다. 그 외에는 의미가 없습니다. 특히, 망할 놈이 항상 이러한 경로가 수정되지 않은 것으로 간주한다는 것은 망할 놈의 약속 이 아닙니다 . 힘내이 추가 lstat는 (2) 비용을 발생시키지 않고 변경되지 않은 것으로 표시된 경로를 확인할 수있는 경우 다음 권한을 보유 합니다. 경로 가 수정 되었다고 보고합니다 (결과적으로 "커밋 자식 -a"는 변경 사항을 커밋 할 수 있습니다).
Junio Hamano의 답변 , Git 2.3.0 (2015 년 2 월)에 추가하면 이제 문서 에서 제거 됩니다.gitignore
이미 추적 된 파일에서 커밋되지 않은 변경 사항을 무시하려면 'git update-index --assume-unchanged
'를 사용하십시오 .
참조 936d2c9 커밋 에서 (마이클 J 그루버 mjg
) :
gitignore.txt
: 제안하지 않음assume-unchanged
git-update-index --assume-unchanged
추적 된 파일에 대한 변경 사항을 무시하는 것은 아닙니다 (일부 통계를 절약하기 위해서만 ).
그러니 그것을 달성하기위한 수단으로 제안하지 않습니다.
바라건대 정보의 소스는 모두 다르고 의미가 있기 때문에 추적되고 색인화되고 느슨하게 커밋되지 않습니다.
- 인덱싱 됨은 파일이 내부에 있음을 의미합니다. 어느 시점의 과거에서 누군가가
git add
파일에 대해 사용 또는 이와 동등한 명령을 사용했습니다. 파일이 추적되고 커밋 될 수도 있습니다. - 추적 됨은 git이 파일의 변경 사항을 감시하고 있음을 의미합니다. 커밋 된 파일 또는 고급의 모든 파일이 추적됩니다.
- 커밋 됨은 파일이 git의 기록에 있음을 의미합니다. 이 파일에 대한 체크 포인트가 하나 이상 있습니다. 커밋 된 파일 버전으로 되돌릴 수 있습니다.
이제 내 지식의 한계까지. 이 정의에 대해 잘 모르겠지만 이것이 제 이해입니다. 이것에 대해 수정되어 기쁩니다.
인덱싱 된 파일이 커밋 될 경우 더 이상 없습니다. 다음에 임시로 돌아갑니다. 색인은 커밋 된 것과 다른 모든 추적 된 파일의 전체입니다 .
고용은 캐시 또는 스테이징 영역이라고도합니다.
당신의 주요 질문에. .git / info / exclude는 .gitignore와 동일하며 우선 순위가 더 낮으며 저장소에는 없습니다 (로는 커밋 및 공유되지 않음). 이미 추적 된 파일에는 영향을주지 않습니다. 둘 다 현재 추적되지 않는 파일에 영향을 미칩니다. .gitignore를 git add
업데이트하거나 git commit
너무 늦었습니다. git은 이미 파일을 추적하고 .gitignore는 이에 영향을주지 않습니다.
변경되지 않은 가정하면 추적 된 파일에만 영향을 미치게됩니다. 일시적으로 파일이 없음 추적하지 않고 무시 된 것처럼 가장 할 수 있습니다 (그러나 무시 동작과 다를 필요도없고 다른 작업도 수행 할 수 있습니다). 다른 오류에서 언급했듯이 사용중인 파일 변경 사항을 무시하는 데 사용되지 않는 파일 시스템에서 파일 시스템에서 작업을 수행합니다.
다시 : 포인트 3 : 된 파일을 git에 추가합니다. 소스가있는 디렉토리로 파일을 전체 디렉토리를 무시하십시오. 묶인 파일을 라이브러리에 묶고 묶고 아티팩트 저장소에 추가하되 git에 넣지는 묶습니다.
.gitignore와 변경되지 않은 가정의 차이점은
.gitignore는 팀의 다른 사람들과 공유 할 수 있고 변경하지 않고 각 구성원에 대해 구성 적으로 구성해야합니다.
변경되지 않은 가정은 추적 된 파일입니다. 파일에 구성 정보를 유용하게 사용할 수 있습니다. 원격 저장소로 푸시하면 git은 원격에서 가져 오기 위해 할 알림을 보냅니다.
참고 URL : https://stackoverflow.com/questions/23097368/git-ignore-vs-exclude-vs-assume-unchanged
'ProgramingTip' 카테고리의 다른 글
Permgen 크기를 선택 설정해야합니까? (0) | 2020.12.01 |
---|---|
UIView의 콘텐츠 압축 저항 및 콘텐츠 포옹은 무엇입니까? (0) | 2020.12.01 |
React를 사용하여 HTML5 데이터 속성을 어떻게 동적으로 설정합니까? (0) | 2020.12.01 |
Postgresql- 데이터베이스 백업 및 다른 소유자로 복원? (0) | 2020.12.01 |
그래프에서 "좋은"격자 선 간격을위한 알고리즘 (0) | 2020.12.01 |