질문 : 힘내- '변경되지 않은 것으로 가정'과 '작업 트리 건너 뛰기'의 차이점
내 저장소에 커밋하지 않으려는 파일에 대한 로컬 변경 사항이 있습니다. 서버에서 애플리케이션을 빌드하기위한 구성 파일이지만 다른 설정으로 로컬에서 빌드하고 싶습니다. 당연히 파일은 항상 'git status'를 준비 할 때 표시됩니다. 이 특정 변경 사항을 숨기고 커밋하지 않고 싶습니다. 다른 파일 변경은하지 않겠습니다.
몇 가지 파헤쳐 본 후, '변경되지 않은 것으로 가정'과 '작업 트리 건너 뛰기'의 두 가지 옵션이 표시됩니다. 여기 의 이전 질문은 그들에 대해 이야기하지만 그 차이점을 실제로 설명하지는 않습니다. 내 질문은 이것이다 : 두 명령이 어떻게 다른가요? 누군가가 둘 중 하나를 사용하는 이유는 무엇입니까?
답변
skip-worktree
원합니다.
assume-unchanged
는 파일 그룹이 수정되었는지 확인하는 데 비용이 많이 드는 경우를 위해 설계되었습니다. 비트를 설정할 때 git
(물론) 인덱스의 해당 부분에 해당하는 파일이 작업 복사본에서 수정되지 않았다고 가정합니다. 따라서 엉망인 stat
호출을 피합니다. 이 비트는 인덱스의 파일 항목이 변경 될 때마다 (따라서 파일이 업스트림으로 변경 될 때) 손실됩니다.
skip-worktree
는 그 이상입니다 : git
이 파일이 수정되었음을 reset --hard
으로 수정해야 함), 대신 색인의 버전을 사용하여 수정되지 않은 것처럼 가장합니다. . 이는 인덱스가 삭제 될 때까지 지속됩니다.
이 차이의 결과와 일반적인 사용 사례에 대한 좋은 요약은 http://fallengamer.livejournal.com/93321.html에 있습니다.
그 기사에서 :
--assume-unchanged
는 개발자가 파일을 변경 해서는 안된다고 가정합니다. 이 플래그는 SDK와 같이 변경되지 않는 폴더의 성능을 개선하기위한 것입니다.--skip-worktree
는 개발자가 파일을 변경해야하기 때문에 git에게 특정 파일을 건드리지 않도록 지시 할 때 유용합니다. 예를 들어, 메인 저장소 업스트림이 일부 프로덕션 준비 구성 파일을 호스팅하고 실수로 해당 파일에 변경 사항을 커밋하지 않으려는 경우--skip-worktree
가 정확히 원하는 것입니다.
출처 : https://stackoverflow.com/questions/13630849/git-difference-between-assume-unchanged-and-skip-worktree
'개발관련 > Git' 카테고리의 다른 글
GitHub에서 오리진과 업스트림의 차이점 (0) | 2021.11.08 |
---|---|
git pull "unable to resolve reference" "unable to update local ref"가 실패합니다. (0) | 2021.11.08 |
Git 리포지토리에서 원격 출처를 제거하는 방법 (0) | 2021.11.05 |
WebStorm Git 리포지토리 세팅 (0) | 2021.11.04 |
다른 브랜치에서 Git에 브랜치 만들기 (0) | 2021.11.04 |