파일 관리
GitLab v19.1Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
Git은 변경 사항을 추적하고, 다른 사람들과 협업하며, 대용량 파일을 효율적으로 관리할 수 있는 파일 관리 기능을 제공합니다. git log를 사용하여 파일의 전체 이력을 확인하고 시간이 지남에 따라 파일이 어떻게 변경되었는지 파악하세요.
Git은 변경 사항을 추적하고, 다른 사람들과 협업하며, 대용량 파일을 효율적으로 관리할 수 있는 파일 관리 기능을 제공합니다.
파일 이력#
git log를 사용하여 파일의 전체 이력을 확인하고 시간이 지남에 따라 파일이 어떻게 변경되었는지 파악하세요.
파일 이력에는 다음 정보가 표시됩니다:
-
각 변경의 작성자.
-
각 수정의 날짜와 시간.
-
각 커밋에서 이루어진 구체적인 변경 내용.
예를 들어, gitlab 리포지터리 루트의 CONTRIBUTING.md 파일에 대한 history 정보를 확인하려면 다음을 실행하세요:
git log CONTRIBUTING.md
출력 예시:
commit b350bf041666964c27834885e4590d90ad0bfe90
Author: Nick Malcolm <nmalcolm@gitlab.com>
Date: Fri Dec 8 13:43:07 2023 +1300
Update security contact and vulnerability disclosure info
commit 8e4c7f26317ff4689610bf9d031b4931aef54086
Author: Brett Walker <bwalker@gitlab.com>
Date: Fri Oct 20 17:53:25 2023 +0000
Fix link to Code of Conduct
and condense some of the verbiage
파일의 이전 변경 내용 확인#
git blame을 사용하여 파일의 마지막 변경을 누가 언제 했는지 확인하세요.
이를 통해 파일 내용의 맥락을 이해하고,
충돌을 해결하며, 특정 변경에 책임이 있는 담당자를 파악할 수 있습니다.
로컬 디렉터리에 있는 README.md 파일에 대한 blame 정보를 찾으려면:
터미널 또는 명령 프롬프트를 여세요.
Git 리포지터리로 이동하세요.
다음 명령어를 실행하세요:
git blame README.md
결과 페이지를 이동하려면 Space를 누르세요.
결과에서 나가려면 Q를 누르세요.
이 출력은 각 줄에 대한 커밋 SHA, 작성자, 날짜가 표시된 주석과 함께 파일 내용을 보여줍니다. 예를 들어:
58233c4f1054c (Dan Rhodes 2022-05-13 07:02:20 +0000 1) ## Contributor License Agreement
b87768f435185 (Jamie Hurewitz 2017-10-31 18:09:23 +0000 2)
8e4c7f26317ff (Brett Walker 2023-10-20 17:53:25 +0000 3) Contributions to this repository are subject to the
58233c4f1054c (Dan Rhodes 2022-05-13 07:02:20 +0000 4)
Git LFS#
Git Large File Storage(LFS)는 Git 리포지터리에서 대용량 파일을 관리하는 데 도움을 주는 확장 기능입니다. Git에서 대용량 파일을 텍스트 포인터로 대체하고, 파일 내용은 원격 서버에 저장합니다.
사전 요건:
-
운영 체제에 맞는 Git LFS CLI 확장 기능을 다운로드하여 설치하세요.
-
Git LFS pre-push 훅을 설치하세요. 이를 위해 리포지터리의 루트 디렉터리에서
git lfs install을 실행하세요.
파일 추가 및 추적#
대용량 파일을 Git 리포지터리에 추가하고 Git LFS로 추적하려면:
특정 유형의 모든 파일에 대해 추적을 구성하세요. iso를 원하는 파일 유형으로 교체하세요:
git lfs track "*.iso"
이 명령어는 ISO 파일을 Git LFS로 처리하는 지침이 담긴 .gitattributes 파일을 생성합니다. 다음 줄이 .gitattributes 파일에 추가됩니다:
*.iso filter=lfs -text
해당 유형의 파일, .iso를 리포지터리에 추가하세요.
.gitattributes 파일과 .iso 파일 모두의 변경 사항을 추적하세요:
git add .
두 파일이 모두 추가되었는지 확인하세요:
git status
.gitattributes 파일은 커밋에 반드시 포함되어야 합니다.
포함되지 않으면 Git은 ISO 파일을 Git LFS로 추적하지 않습니다.
변경하는 파일이 `.gitignore` 파일에 나열되어 있지 않은지 확인하세요.
나열되어 있으면 Git은 변경 내용을 로컬에 커밋하지만 업스트림 리포지터리로 푸시하지 않습니다.
두 파일을 로컬 리포지터리 복사본에 커밋하세요:
git commit -m "Add an ISO file and .gitattributes"
변경 사항을 업스트림으로 푸시하세요. main을 브랜치 이름으로 교체하세요:
git push origin main
머지 리퀘스트를 생성하세요.
새 파일 유형을 Git LFS 추적에 추가하면, 해당 유형의 기존 파일은 Git LFS로 변환되지 않습니다. 추적을 시작한 후에 추가된 해당 유형의 파일만 Git LFS에 추가됩니다. 기존 파일을 Git LFS로 변환하려면 `git lfs migrate`를 사용하세요.
파일 추적 중지#
Git LFS로 파일 추적을 중지하면, 해당 파일은 여전히 리포지터리의 이력에 포함되어 있으므로 디스크에 남아 있습니다.
Git LFS로 파일 추적을 중지하려면:
git lfs untrack 명령어를 실행하고 파일 경로를 제공하세요:
git lfs untrack doc/example.iso
touch 명령어를 사용하여 표준 파일로 다시 변환하세요:
touch doc/example.iso
파일의 변경 사항을 추적하세요:
git add .
변경 사항을 커밋하고 푸시하세요.
머지 리퀘스트를 생성하고 리뷰를 요청하세요.
머지 리퀘스트를 타깃 브랜치에 머지하세요.
`git lfs untrack`으로 추적하지 않고 Git LFS가 추적하는 객체를 삭제하면,
해당 객체가 git status에서 modified로 표시됩니다.
특정 유형의 모든 파일 추적 중지#
Git LFS에서 특정 유형의 모든 파일 추적을 중지하려면:
git lfs untrack 명령어를 실행하고 추적을 중지할 파일 유형을 제공하세요:
git lfs untrack "*.iso"
touch 명령어를 사용하여 파일을 표준 파일로 다시 변환하세요:
touch *.iso
파일의 변경 사항을 추적하세요:
git add .
변경 사항을 커밋하고 푸시하세요.
머지 리퀘스트를 생성하고 리뷰를 요청하세요.
머지 리퀘스트를 타깃 브랜치에 머지하세요.
독점 파일 잠금#
독점 파일 잠금은 충돌을 방지하고 한 번에 한 사람만 파일을 편집할 수 있도록 합니다. 다음과 같은 경우에 유용한 옵션입니다:
-
머지할 수 없는 바이너리 파일. 예를 들어, 디자인 파일과 동영상.
-
편집 중 독점 접근이 필요한 파일.
독점 파일 잠금은 리포지터리의 모든 브랜치에 적용됩니다. 기본 브랜치에서만 파일을 잠가야 하는 경우, 대신 기본 브랜치 파일 및 디렉터리 잠금을 사용하세요.
사전 요건:
-
Git LFS가 설치되어 있어야 합니다.
-
해당 프로젝트에 Maintainer 권한이 있어야 합니다.
파일 잠금 구성#
특정 파일 유형에 대해 파일 잠금을 구성하려면:
--lockable 옵션과 함께 git lfs track 명령어를 사용하세요. 예를 들어, PNG 파일을 구성하려면:
git lfs track "*.png" --lockable
이 명령어는 다음 내용으로 .gitattributes 파일을 생성하거나 업데이트합니다:
*.png filter=lfs diff=lfs merge=lfs -text lockable
변경 사항이 적용되도록 .gitattributes 파일을 원격 리포지터리로 푸시하세요.
파일 유형이 잠금 가능으로 등록되면 자동으로 읽기 전용으로 표시됩니다.
LFS 없이 파일 잠금 구성#
Git LFS를 사용하지 않고 파일 유형을 잠금 가능으로 등록하려면:
.gitattributes 파일을 직접 편집하세요:
*.pdf lockable
.gitattributes 파일을 원격 리포지터리로 푸시하세요.
파일 잠금 및 잠금 해제#
독점 파일 잠금으로 파일을 잠그거나 잠금 해제하려면:
리포지터리 디렉터리에서 터미널 창을 여세요.
다음 명령어 중 하나를 실행하세요:
파일 잠금
git lfs lock path/to/file.png
파일 잠금 해제
git lfs unlock path/to/file.png
ID로 파일 잠금 해제
git lfs unlock --id=123
강제 파일 잠금 해제
git lfs unlock --id=123 --force
잠긴 파일 보기#
잠긴 파일을 보려면:
리포지터리에서 터미널 창을 여세요.
다음 명령어를 실행하세요:
git lfs locks
출력에는 잠긴 파일, 잠근 사용자, 파일 ID가 나열됩니다.
GitLab UI에서:
-
리포지터리 파일 트리에는 Git LFS가 추적하는 파일에 LFS 배지가 표시됩니다.
-
독점 잠금된 파일에는 자물쇠 아이콘이 표시됩니다.
독점 잠금된 파일의 이름을 바꾸면 잠금이 해제됩니다. 잠금 상태를 유지하려면 다시 잠가야 합니다.
파일 잠금 및 편집#
파일을 잠그고 편집한 후 선택적으로 잠금을 해제하려면:
파일을 잠그세요:
git lfs lock <file_path>
파일을 편집하세요.
선택 사항. 완료되면 파일 잠금을 해제하세요:
git lfs unlock <file_path>