InfoGrab DocsInfoGrab Docs

파일 관리

요약

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 리포지터리에 추가하고 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>

관련 주제#

파일 관리

GitLab v19.1
Tier: Free, Premium, Ultimate
Offering: 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 리포지터리에 추가하고 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>

관련 주제#