GitHub과 GitHub Copilot
첫번째 모듈에 대한 해석입니다.
다음 내용에 대하여 궁금하신 분들은 링크에 들어가서 모듈을 완수하며
git과 github, 버전 관리에 대하여 배워보시기 바랍니다.
배우시다보면 영상 자료도 나와있어 이해가 쉽습니다.
이 모듈에서는 다음을 학습합니다.
버전 제어가 무엇인지 알아보세요
Git과 같은 분산 버전 제어 시스템을 이해하세요
Git과 GitHub의 차이점과 소프트웨어 개발 라이프사이클에서 두 플랫폼이 수행하는 역할을 인식합니다.
버전 관리 시스템(VCS)은 여러 파일의 변경 사항을 추적하는 프로그램 또는 프로그램 집합입니다. VCS의 목표 중 하나는 개별 파일이나 전체 프로젝트의 이전 버전을 쉽게 불러오는 것입니다. 또 다른 목표는 여러 팀원이 서로의 작업에 영향을 주지 않고 동시에 같은 파일에서 프로젝트를 작업할 수 있도록 하는 것입니다.
VCS의 또 다른 이름은 소프트웨어 구성 관리(SCM) 시스템입니다. 두 용어는 종종 혼용되며, 실제로 Git 공식 문서는 git-scm.com 에서 확인할 수 있습니다 . 기술적으로 버전 관리는 SCM에 관련된 여러 가지 방법 중 하나일 뿐입니다. VCS는 소프트웨어 프로젝트 외에도 서적이나 온라인 튜토리얼 등 다양한 프로젝트에 사용될 수 있습니다.
VCS를 사용하면 다음을 수행할 수 있습니다.
프로젝트에 적용된 모든 변경 사항, 변경 시점, 변경한 사람을 확인하세요.
각 변경 사항에 그 이유를 설명하는 메시지를 포함하세요.
전체 프로젝트 또는 개별 파일의 이전 버전을 검색합니다.
실험적으로 변경할 수 있는 브랜치를 생성합니다 . 이 기능을 사용하면 여러 사람이 동시에 여러 변경 사항(예: 기능 또는 버그 수정)을 작업할 수 있으며, 메인 브랜치에 영향을 주지 않습니다. 나중에 유지하고 싶은 변경 사항을 메인 브랜치에 병합할 수 있습니다.
예를 들어, 새로운 릴리스를 표시하기 위해 버전에 태그를 붙입니다.
Git은 빠르고 다재다능하며 확장성이 뛰어난 무료 오픈소스 VCS입니다. 주요 개발자는 리눅스의 창시자인 리누스 토발즈입니다.
CVS, Subversion(SVN), Perforce를 포함한 초기 VCS는 프로젝트 이력을 저장하기 위해 중앙 집중형 서버를 사용했습니다. 이러한 중앙 집중화는 하나의 서버가 잠재적으로 단일 장애 지점이 될 수 있음을 의미했습니다.
Git은 분산형 입니다 . 즉, 프로젝트의 전체 히스토리가 클라이언트 와 서버 모두에 저장됩니다. 네트워크 연결 없이도 파일을 편집하고, 로컬에서 체크인하고, 연결이 가능해지면 서버와 동기화할 수 있습니다. 서버가 다운되더라도 프로젝트의 로컬 사본은 그대로 유지됩니다. 기술적으로는 서버가 없어도 됩니다. 변경 사항을 이메일로 전달하거나 이동식 미디어를 사용하여 공유할 수 있지만, 실제로 Git을 이런 방식으로 사용하는 사람은 거의 없습니다.
Git을 이해하려면 용어를 이해해야 합니다. Git 사용자들이 자주 사용하는 용어를 간략하게 정리했습니다. 지금은 자세한 내용은 신경 쓰지 마세요. 이 모듈의 연습 문제를 풀다 보면 모든 용어가 익숙해질 것입니다.
작업 트리 : 작업 중인 프로젝트를 담고 있는 중첩된 디렉토리와 파일의 집합입니다.
저장소(repo) : 작업 트리의 최상위에 위치한 디렉터리로, Git이 프로젝트의 모든 히스토리와 메타데이터를 보관합니다. 저장소는 거의 항상 repos 라고 합니다 . 베어 저장소(bare repository) 는 작업 트리에 속하지 않는 저장소로, 공유 또는 백업에 사용됩니다. 베어 저장소는 일반적으로 .git 으로 끝나는 디렉터리입니다 (예: project.git ).
해시 : 파일이나 다른 객체의 내용을 고정된 자릿수로 나타내는 해시 함수로 생성된 숫자입니다. Git은 160비트 길이의 해시를 사용합니다. 해시를 사용하는 한 가지 장점은 Git이 파일의 내용을 해시하고 그 결과를 이전 해시와 비교하여 파일의 변경 여부를 확인할 수 있다는 것입니다. 파일의 시간 및 날짜 스탬프가 변경되었지만 파일 해시가 변경되지 않은 경우, Git은 파일 내용이 변경되지 않았음을 확인합니다.
객체 : Git 저장소는 네 가지 유형의 객체를 포함하며, 각 객체는 SHA-1 해시로 고유하게 식별됩니다. 블롭 객체는 일반 파일을 포함합니다. 트리 객체는 디렉터리를 나타내며, 이름, 해시, 권한을 포함합니다. 커밋 객체는 작업 트리의 특정 버전을 나타냅니다. 태그는 커밋에 붙은 이름입니다.
커밋 : 동사로 사용될 경우, 커밋은 커밋 객체를 만드는 것을 의미합니다. 이 동작은 '데이터베이스에 커밋한다'에서 이름을 따왔습니다. 즉, 변경 사항을 다른 사람들도 볼 수 있도록 커밋한다는 의미입니다.
브랜치 : 브랜치는 연결된 커밋의 이름이 지정된 시리즈입니다. 브랜치의 가장 최근 커밋을 헤드 라고 합니다 . 저장소를 초기화할 때 생성되는 기본 브랜치는 라고 하며 main, Git에서는 종종 이 이름을 사용합니다 master. 현재 브랜치의 헤드는 입니다 HEAD. 브랜치는 개발자가 브랜치에서 독립적으로(또는 함께) 작업하고 나중에 변경 사항을 기본 브랜치에 병합할 수 있도록 해주는 Git의 매우 유용한 기능입니다.
원격 : 원격은 다른 Git 저장소에 대한 명명된 참조입니다. 저장소를 생성하면 Git은 origin푸시 및 풀 작업의 기본 원격인 원격을 생성합니다.
명령 , 하위 명령 및 옵션git push : Git 작업은 and 와 같은 명령을 사용하여 수행됩니다 git pull. git는 명령이고, pushor pull는 하위 명령입니다. 하위 명령은 Git에서 수행할 작업을 지정합니다. 명령에는 하이픈(-) 또는 이중 하이픈(--)을 사용하는 옵션이 함께 제공되는 경우가 많습니다. 예를 들어, git reset --hard.
이러한 용어와 , 같은 다른 용어들은 push, 곧 pull 더 잘 이해될 것입니다. 하지만 어딘가에서는 시작이 필요하며, 모듈을 마친 후 이 용어집을 다시 살펴보는 것이 도움이 될 수 있습니다.
Git에는 GitHub Desktop을 포함하여 다양한 GUI가 있습니다. Microsoft Visual Studio Code 와 같은 많은 프로그래밍 편집기 도 Git 인터페이스를 제공합니다. 하지만 각 편집기는 작동 방식과 제한 사항이 다릅니다. Git의 모든 기능을 구현하는 편집기는 없습니다.
이 모듈의 연습에서는 Git 명령줄, 특히 Azure Cloud Shell에서 실행되는 Git 명령을 사용합니다. 하지만 Git의 명령줄 인터페이스는 어떤 운영 체제를 사용하든 동일하게 작동합니다. 또한, 명령줄을 통해 Git의 모든 기능을 활용할 수 있습니다. GUI를 통해서만 Git을 사용하는 개발자는 해결할 수 없는 오류 메시지를 접하게 되고, 다시 시작하기 위해 명령줄을 사용해야 하는 경우가 있습니다.
Git을 사용하면 Git이 제공하는 기능과 GitHub 에서 제공하는 기능의 차이점이 궁금할 수 있습니다 .
앞서 언급했듯이 Git은 여러 개발자와 다른 기여자들이 프로젝트 작업에 사용할 수 있는 분산 버전 관리 시스템(DVCS)입니다. 하나 이상의 로컬 브랜치를 사용하여 작업한 후 원격 저장소에 푸시할 수 있는 기능을 제공합니다.
GitHub은 Git을 핵심 기술로 사용하는 클라우드 플랫폼입니다. GitHub은 프로젝트 협업 과정을 간소화하고, 개발자와 사용자가 협업하는 데 사용할 수 있는 웹사이트, 더 많은 명령줄 도구, 그리고 전반적인 흐름을 제공합니다. GitHub은 앞서 언급한 원격 저장소 역할을 합니다.
GitHub에서 제공하는 주요 기능은 다음과 같습니다.
문제
토론
풀 리퀘스트
알림
라벨
행위
포크
프로젝트
더 좋은 내용 소개로 찾아오겠습니다.
열공하세요 :)