스택큐힙리스트

내용:git assume unchanged 대비 skip worktree - 심볼릭 링크를 무시함 본문

카테고리 없음

내용:git assume unchanged 대비 skip worktree - 심볼릭 링크를 무시함

스택큐힙리스트 2023. 11. 21. 00:03
반응형

저는 git 저장소와 windows에 문제가 있습니다. 문제는 git 저장소에 Linux 심볼릭 링크가 있고, 윈도우에서 작업하는 개발자들에게는 잘 작동하지 않는다는 것입니다. 이제 그 심볼릭 링크는 결코 변경되지 않아야 하므로, 개발자들에서 심볼릭 링크를 삭제하고 해당 자리에 폴더를 추가하되, git이 이러한 특정 변경 사항을 무시하도록하고 싶습니다. 이제 심볼릭 링크를 제거하고 동일한 이름의 폴더를 생성한 다음 모든 것을 무시하는 .gitignore를 추가 할 수 있습니다. 심볼릭 링크 제거를 git이 무시하도록하는 것과 관련하여, 제가 찾은 두 가지 가능한 해결책은 다음과 같습니다:


git update-index --assume-unchanged [파일]
git update-index --skip-worktree [파일]

내 질문은 어떤 옵션이 최선일까요? 이 작업을 수행한 후에는 특별히 하지 않는 한 절대로 되돌려지지 않는지 확인하고 싶습니다. 원복, 재설정, 브랜치 생성, 병합 등 모두 정상적으로 작동하는지 확인하고 싶습니다.

답변 1

두 가지 옵션 모두 문제가 있습니다. --assume-unchanged는 인덱스가 폐기될 때마다 자동으로 재설정되므로 빨리 또는 늦게 문제가 발생할 수 있습니다. --skip-worktree도 마찬가지입니다... 그러나 체크 아웃하지 않을 파일들의 로컬 목록을 유지하면 필요할 때마다 skip-worktree 비트가 자동으로 다시 설정됩니다. 다음은 진행해야 할 단계입니다:



  • core.sparseCheckout를 저장소에 대해 true로 설정합니다.

  • .git/info/sparse-checkout이라는 파일을 만들고 두 가지 패턴을 포함시킵니다. 모든 것을 포함하기 위한 *와 시링크 foo를 제외하기 위한 !/foo입니다 (/는 최상위에 앵커를 의미합니다).

  • 이제 skip-worktree 비트를 수동으로 설정한 다음 시링크를 삭제합니다.


이제 git이 디렉토리를 자동으로 커밋하지 않을 것을 걱정하지 않고 진행할 수 있지만, 다른 사람이 명시적으로 git add를 실행하는 경우나 디렉토리나 그 안의 파일에 문제가 발생할 수 있음에 유의하십시오.

[편집된 내용 추가:] 추가적인 토론 후에, 우리는 마지막 문제에 대한 해결책을 찾았습니다: 디렉토리 안에 * 패턴을 포함한 .gitignore 파일을 넣으세요.

답변 2

Git Assume Unchanged vs Skip Worktree – 심볼릭 링크 무시하기
개발자들이 Git을 사용하여 코드의 변경 사항을 추적하고 협업하는 것은 매우 일반적입니다. 그러나 가끔 심볼릭 링크를 사용하는 경우에는 Git이 그들을 처리하는 방식에 대한 몇 가지 주의 사항이 있습니다. 이 문제를 해결하기 위해 Git은 assume unchanged와 skip worktree라는 두 가지 옵션을 제공합니다. 이 두 가지 옵션은 심볼릭 링크를 무시하여 변경 사항을 추적하지 않도록 설정하는 데 사용됩니다.
처음으로, assume unchanged 옵션에 대해 알아보겠습니다. 이 옵션을 사용하면 Git이 파일이 변경되었다고 가정하지 않고 무시하도록 지시할 수 있습니다. 심볼릭 링크가 가리키는 대상 파일의 상태가 변경되더라도 Git은 이 변경에 대해 알지 못합니다. 이는 일부 개발자가 심볼릭 링크를 사용하여 빠르게 대상 파일의 상태를 확인하고자 할 때 유용합니다. 하지만 실제로 심볼릭 링크 대상 파일이 변경되면 문제가 발생할 수 있습니다. 이렇게 되면 Git은 변경된 내용을 추적하지 못하고, 변경된 파일을 무시하고 이전 버전을 그대로 사용하게 됩니다.
skip worktree 옵션은 assume unchanged 옵션과는 조금 다릅니다. 이 옵션을 사용하면 Git이 변경된 파일을 무시하고 이전 버전을 그대로 유지할 수 있습니다. 심볼릭 링크 대상 파일이 변경되어도 Git은 변경을 추적하지 않으며, 변경된 파일을 버전 관리하지 않습니다. 그러나 이전 버전을 유지하는 것은 이후에 코드를 복구하지 못하고 이전 버전을 다시 사용할 수 없는 문제를 초래할 수 있습니다. 따라서 skip worktree 옵션은 임시적인 수정이나 특별한 상황에만 사용하는 것이 좋습니다.
심볼릭 링크를 사용하는 경우에 assume unchanged와 skip worktree 중 어떤 옵션을 선택해야 할지는 개발자의 목적과 요구에 따라 다릅니다. 빠르게 대상 파일의 변경 사항을 확인하고자 한다면 assume unchanged 옵션을 선택할 수 있습니다. 그러나 변경 사항을 추적하려는 경우에는 skip worktree 옵션을 고려해야 합니다. 어떤 옵션을 선택하든 개발자는 심볼릭 링크를 사용할 때 발생할 수 있는 잠재적인 문제에 대해 인지해야 합니다.
이러한 Git의 assume unchanged와 skip worktree 옵션은 심볼릭 링크를 사용하는 개발자들에게 매우 유용할 수 있습니다. 그러나 이러한 옵션을 사용할 때 발생할 수 있는 문제에 대해 인식하는 것은 매우 중요합니다. 개발자가 심볼릭 링크를 적절하게 활용함으로써 코드 변경과 협업을 원할하게 관리할 수 있을 것입니다.
이렇듯 assume unchanged와 skip worktree 옵션은 Git의 복잡한 기능 중 하나로 심볼릭 링크를 무시하고 변경 사항을 추적하지 않을 수 있도록 설정하는 목적으로 사용됩니다. 이러한 옵션을 적절하게 사용하여 개발자들이 코드 변경과 협업을 효율적으로 관리할 수 있도록 도움을 주는 것은 분명한 사실입니다. 따라서 개발자들은 이러한 옵션을 활용하여 원활한 개발 환경을 조성하는 데 있어 큰 이점을 얻을 수 있을 것입니다.

반응형
Comments