스택큐힙리스트

"git clone --mirror"와 "git clone --bare"의 차이점은 무엇입니까? 본문

카테고리 없음

"git clone --mirror"와 "git clone --bare"의 차이점은 무엇입니까?

스택큐힙리스트 2023. 11. 23. 09:52
반응형

git clone 도움말 페이지에는 다음과 같은 내용이 있습니다. --mirror에 대해 다음과 같이 설명합니다:



원격 저장소의 미러를 설정합니다. 이것은 --bare를 함축합니다.



하지만 --mirror 클론과 --bare 클론이 어떻게 다른지에 대한 자세한 내용은 제공하지 않습니다.

답변 1

원본에는 몇 개의 브랜치 (master (HEAD), next, pu, maint), 일부 태그 (v1, v2, v3), 일부 원격 브랜치 (devA/master, devB/master), 그리고 일부 다른 refs (refs/foo/bar, refs/foo/baz, 노트, stash, 다른 개발자의 네임스페이스 등일 수 있음) 가 있습니다.


  • git clone origin-url (비어있지 않은): 모든 태그가 복사되며, 로컬 브랜치인 master (HEAD)가 원격 브랜치인 origin/master를 추적하고 있으며, 원격 브랜치인 origin/next, origin/pu, 그리고 origin/maint가 있습니다. 추적 브랜치들은 git fetch origin과 같은 작업을 수행하면 예상대로 가져올 수 있도록 설정됩니다. 복제된 원격의 원격 브랜치 및 다른 참조는 완전히 무시됩니다.


  • git clone --bare origin-url: 모든 태그가 복사되며, 로컬 브랜치인 master (HEAD), next, pu, 그리고 maint가 있으며, 원격 추적 브랜치는 없습니다. 즉, 모든 브랜치가 원본 그대로 복사되며, 완전히 독립적으로 설정되어 다시 가져올 것을 기대하지 않습니다. 복제된 원격의 원격 브랜치 및 다른 참조는 완전히 무시됩니다.


  • git clone --mirror origin-url: 모든 참조가 그대로 복사됩니다. 모든 태그와 로컬 브랜치인 master (HEAD), next, pu, 그리고 maint를 가져올 수 있으며, 원격 브랜치로는 devA/masterdevB/master가 있으며, 다른 참조로는 refs/foo/barrefs/foo/baz가 있습니다. 모든 것이 복제된 원격과 동일하게 유지됩니다. 원격 추적은 git remote update를 실행하면 모든 참조가 원본에서 덮어씌워지도록 설정됩니다. 문서에 원래 적혀있던 대로, 이것은 거울입니다. 기능적으로 동일한 복사본으로, 원본과 상호 교환 가능합니다.


답변 2

깃(Git)은 현재 가장 인기 있는 버전 관리 시스템 중 하나로, 프로젝트의 히스토리와 변경 사항을 관리하는 데 사용됩니다. 깃을 사용하면 여러 사람이 동시에 작업하고 변경 사항을 추적하며, 안전하게 프로젝트를 관리할 수 있습니다. 깃을 사용하는 방법에 대해 많은 사람들이 알고 있지만, 여전히 유용한 기능 중 하나인 깃 클론 --mirror와 깃 클론 --bare의 차이에 대해 혼란을 겪고 있습니다.
먼저, 깃 클론 --mirror와 깃 클론 --bare은 모두 원격 저장소를 복제하는 데 사용되는 명령어입니다. 원격 저장소는 프로젝트의 모든 버전과 변경 사항을 포함하고 있으며, 이를 로컬 컴퓨터로 가져와 작업할 수 있게 해줍니다.
그러나 깃 클론 --mirror와 깃 클론 --bare는 몇 가지 중요한 차이점이 있습니다. 깃 클론 --mirror는 원격 저장소의 모든 브랜치, 태그, 레퍼런스 등을 복사합니다. 이는 원격 저장소의 완벽한 복제본을 생성하므로, 원격 저장소와 정확히 동일한 상태를 유지합니다. 따라서, 깃 클론 --mirror로 복제된 로컬 저장소를 업데이트하면, 원격 저장소의 변경 사항이 자동으로 반영됩니다.
반면에, 깃 클론 --bare는 원격 저장소의 오직 버전과 레퍼런스만 복사합니다. 따라서, 로컬 저장소에서 변경 사항을 추적하려면 추가적인 설정이 필요합니다. 일반적으로 깃 클론 --bare는 중앙 원격 저장소로 사용되며, 여러 사용자와의 협업을 위해 사용됩니다. 이 경우, 개발자는 로컬 저장소에서 변경 사항을 추적하고, 중앙 원격 저장소로 푸시(Push)하여 다른 개발자들과 변경 사항을 공유합니다.
두 가지 명령어의 주요 차이점은 이렇습니다. 깃 클론 --mirror는 원격 저장소의 완벽한 복제본을 생성하며, 변경 사항이 자동으로 업데이트됩니다. 반면에, 깃 클론 --bare는 오직 버전과 레퍼런스만 복사하며, 변경 사항을 추적하기 위해서는 추가적인 작업이 필요합니다.
깃은 개발자들에게 기반 시스템으로서 많은 혜택을 제공합니다. 그리고 깃 클론 --mirror와 깃 클론 --bare와 같은 명령어들은 깃을 더욱 효율적으로 사용할 수 있게 돕습니다. 개발자가 이러한 명령어의 차이점을 알고, 상황에 맞게 사용할 수 있도록 하는 것이 중요합니다.

반응형
Comments