(연구) 깃허브 애널리틱스

GitHub의 기능 연구

1. 협업 코딩 최적화

코드 공간

Codespaces는 코드 개발의 접근성을 높이고 반복 가능한 구성 옵션을 확장하는 클라우드 호스팅 개발 환경입니다.

팀은 Codespaces를 사용하여 반복 가능한 프로젝트 구성 생성을 포함하여 프로젝트를 사용자 지정할 수 있습니다.

Codespace는 2~32개의 VM 기반 서버에서 구성할 수 있으며 Visual Studio(VS) Code에서 로컬로 연결하거나 브라우저를 사용하여 원격으로 연결할 수 있습니다.

버전 관리

버전 관리는 개발자 간의 협업을 위해 필요합니다.

개발 부분을 나누어 개발 소스 코드 전체를 공유할 수 있으며, 동일한 모듈을 개발하더라도 소스 코드 개발도 공유할 수 있습니다.

버전 제어에서 소스 또는 그룹은 버전으로 간주됩니다.

파일 또는 폴더를 추가, 편집 및 삭제하고 수동으로 관리합니다.

언제든지 이전 버전의 전체 내용으로 돌아갈 수 있어 복잡한 코드를 개발할 때 이전 버전과 비교하기에 편리합니다.

버전 제어 사용의 이점은 개발 협업이 쉽다는 것입니다.

또한 이력을 개별적으로 관리할 수 있고 관리 내용을 오픈소스로 공유할 수 있다는 장점이 있다.

또한 GitHub를 통해 사용자는 다른 사용자의 프로젝트를 분기하여 자신의 버전을 만들고 유지 관리할 수 있습니다.

GitHub 부조종사

GitHub Copilot은 OpenAI Codex를 사용하여 편집기에서 실시간으로 코드와 전체 기능을 제공합니다.

GitHub Copilot은 코딩할 때 자동 완성 스타일 제안을 제공하는 AI 쌍 프로그래머입니다.

사용하려는 코드 작성을 시작하거나 코드에서 수행하려는 작업을 설명하는 자연어 주석을 작성하여 GitHub Copilot에서 제안을 얻을 수 있습니다.

GitHub Copilot은 편집 중인 파일 및 관련 파일의 컨텍스트를 분석하고 텍스트 편집기에서 제안을 제공합니다.

GitHub Copilot은 OpenAI에서 만든 새로운 인공 지능 시스템인 OpenAI Codex로 구동됩니다.

풀 리퀘스트

풀 요청을 사용하면 GitHub의 리포지토리에서 브랜치로 푸시한 변경 사항을 다른 사용자에게 알릴 수 있습니다.

풀 리퀘스트를 열면 변경 사항이 마스터 브랜치에 병합되기 전에 후속 커밋을 추가하면서 공동 작업자와 잠재적인 변경 사항을 논의하고 검토할 수 있습니다.

GitHub를 사용하면 프로젝트에서 작업하는 모든 사람이 자신의 컴퓨터에 동일한 코드의 복사본을 갖게 됩니다.

이것은 GitHub에 어떤 일이 발생하면 이론적으로 모든 것을 함께 모을 수 있음을 의미합니다.

2. CI/CD 자동화

행동

GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 지속적 통합 및 지속적 배포(CI/CD) 플랫폼입니다.

리포지토리의 모든 풀 요청을 빌드 및 테스트하는 워크플로를 생성하거나 병합된 풀 요청을 프로덕션에 배포할 수 있습니다.

DevOps 외에도 GitHub Actions는 리포지토리에서 다른 이벤트가 발생할 때 워크플로를 실행할 수도 있습니다.

예를 들어 누군가 저장소에 새 문제를 생성할 때마다 적절한 태그를 자동으로 추가하는 워크플로우를 실행할 수 있습니다.

GitHub는 Linux, Windows 및 macOS 가상 머신을 제공하여 워크플로를 실행하거나 자체 데이터 센터 또는 클라우드 인프라에서 자체 호스팅 러너를 호스팅할 수 있습니다.

GitHub 패키지

GitHub Packages는 명명된 사용자를 위해 비공개 또는 공개적으로 소프트웨어 패키지를 호스팅하고 프로젝트에서 종속성으로 사용할 수 있도록 하는 패키지 호스팅 서비스입니다.

GitHub 패키지는 컨테이너 및 기타 종속성을 포함하여 패키지를 호스팅하고 관리하기 위한 플랫폼입니다.

GitHub 패키지를 사용하면 소스 코드와 패키지를 한 곳으로 결합하여 통합 권한 관리 및 청구를 제공함으로써 GitHub에서 소프트웨어 개발을 중앙 집중화할 수 있습니다.

3. 강력한 보안

저장소 보안

리포지토리는 개별적으로 소유하거나 조직의 다른 사용자와 리포지토리 소유권을 공유할 수 있습니다.

표시 여부를 선택하여 리포지토리에 액세스할 수 있는 사람을 제한할 수 있습니다.

사용자 소유 리포지토리의 경우 다른 사용자가 프로젝트에서 공동 작업할 수 있도록 공동 작업자 액세스 권한을 부여할 수 있습니다.

조직이 리포지토리를 소유한 경우 조직 구성원에게 리포지토리에서 공동 작업할 수 있는 액세스 권한을 부여할 수 있습니다.

비밀 스캔

GitHub는 실수로 커밋된 비밀이 사기에 사용되는 것을 방지하기 위해 알려진 유형의 비밀에 대한 리포지토리를 확인합니다.

Secret Scan은 GitHub 리포지토리에 있는 모든 분기의 전체 Git 기록에서 비밀을 스캔합니다.

4. 프로젝트 관리의 편의성

프로젝트는 작업을 효율적으로 계획하고 추적하는 데 도움이 되도록 GitHub의 문제 및 끌어오기 요청과 통합되는 조정 가능한 스프레드시트입니다.

문제 및 풀 요청을 필터링, 정렬 및 그룹화하고, 구성 가능한 그래프에서 작업을 시각화하고, 팀별 메타데이터를 추적하기 위한 사용자 지정 필드를 추가하여 여러 보기를 만들고 사용자 지정할 수 있습니다.

특정 접근 방식을 적용하는 대신 Projects는 팀의 요구 사항과 프로세스에 맞게 조정할 수 있는 유연한 기능을 제공합니다.

또한 팀 관리 기능을 통해 팀 작업을 조정하고 결과를 관리할 수 있습니다.

문제가 발생하면 개발이 진행되는 GitHub에서 작업을 추적할 수 있습니다.

다른 이슈나 풀 리퀘스트에서 이슈를 언급하면 ​​이슈의 타임라인에 상호 참조가 반영되어 관련 작업을 추적할 수 있습니다.

작업이 진행 중임을 나타내기 위해 문제를 풀 요청에 연결할 수 있습니다.

풀 요청이 병합되면 연결된 이슈가 자동으로 닫힙니다.

기능 개요(주요 기능 계층)

클론

복제는 특정 리포지토리를 로컬 컴퓨터에 복사하여 새 리포지토리를 생성합니다.

원래 리포지토리를 원격 리포지토리 소스로 복제했습니다.

권한이 없으면 저장소에 푸시할 수 없습니다.

또한 처음으로 원본 저장소에 연결할 수 없습니다.

즉, 리포지토리에 커밋 등의 로그가 표시되지 않습니다.

십자가

포크는 귀하의 계정에 있는 다른 사용자 저장소의 비공개 사본입니다.

포크를 사용하면 원래 업스트림 리포지토리에 영향을 주지 않고 프로젝트를 자유롭게 변경할 수 있습니다.

또한 업스트림 리포지토리에서 풀 요청을 열고 두 리포지토리가 계속 연결되어 있으므로 포크를 최신 변경 사항과 동기화 상태로 유지할 수 있습니다.

복제와 포크의 차이점
Forking은 특정 부분을 수정하거나 다른 사람의 Github 저장소에서 다른 기능을 추가할 때 저장소를 자신의 Github 저장소로 복사하는 기능입니다.

분기된 리포지토리는 원래 리포지토리(다른 사람의 github 리포지토리)에 연결됩니다.

여기서 링크한다는 것은 원래 리포지토리에 변경 사항(새 커밋)이 있는 경우 포크된 리포지토리에 그대로 반영될 수 있음을 의미합니다.

이 때 가져오기 또는 리베이스 프로세스가 필요합니다.

병합

Merge는 한 브랜치(동일한 리포지토리 또는 브랜치)에서 변경 사항을 가져와서 다른 브랜치에 적용합니다.

이는 일반적으로 “풀 요청”(병합 요청으로 생각할 수 있음) 또는 명령줄을 통해 발생합니다.

충돌하는 변경 사항이 없거나 항상 명령줄을 통해 수행할 수 있는 경우 GitHub.com 병합은 웹 인터페이스를 통한 풀 요청을 통해 수행할 수 있습니다.

당기다

당기기는 변경 사항을 가져오고 병합할 시기를 나타냅니다.

예를 들어 양 당사자가 작업 중인 원격 파일을 편집하는 경우 로컬 복사본의 변경 사항을 최신 상태로 유지하려고 합니다.

가져왔다

커밋하지 않고 원격 저장소에서 로컬 작업 브랜치로 변경 사항을 추가하려면 “git fetch”를 사용하십시오. “git pull”과 달리 가져오기를 사용하면 변경 사항을 로컬 브랜치에 커밋하기 전에 확인할 수 있습니다.

끌어오기와 가져오기의 차이점

git fetch는 원격 저장소에서 최신 메타데이터 정보를 가져오도록 로컬 Git에 지시합니다.

그러나 가져오기는 원격 웨어하우스에 변경 사항이 있는지 여부만 확인하고 변경된 데이터를 로컬 Git으로 실제로 가져오지는 않습니다.

반면 git pull은 원격 웨어하우스에서 변경된 메타데이터 정보를 확인할 뿐만 아니라 최신 데이터를 로컬 Git에 복사합니다.

원격 저장소에 변경 사항이 있을 때 즉시 풀을 수행하면 현재 브랜치의 파일과 작업 복사본이 변경되어 새로운 작업이 손실될 수 있습니다.

따라서 가져오기를 실행하기 전에 가져오기를 사용하여 변경 사항을 확인하는 것이 더 안전합니다.

풀 리퀘스트

풀 요청은 사용자가 제출하고 리포지토리 공동 작업자가 수락하거나 거부하는 리포지토리에 대한 제안된 변경 사항입니다.

이슈와 마찬가지로 각 풀 요청에는 자체 토론 포럼이 있습니다.

푸시

푸시 커밋 변경 사항 GitHub.com 원격 저장소로 보내기를 의미합니다.

예를 들어 다른 사용자가 액세스할 수 있도록 로컬에서 변경 사항을 푸시할 수 있습니다.

가지

브랜치는 리포지토리의 병렬 버전입니다.

저장소에 포함되어 있지만 기본 또는 마스터 분기에 영향을 주지 않으므로 “라이브” 버전을 방해하지 않고 자유롭게 작업할 수 있습니다.

원하는 대로 변경한 후 브랜치를 다시 마스터로 병합하여 변경 사항을 게시할 수 있습니다.

범죄

커밋은 파일(또는 파일 집합)에 대한 개별 변경 사항입니다.

작업 저장을 커밋하면 Git은 고유한 ID(일명 “SHA” 또는 “해시”)를 생성하여 커밋된 특정 변경 사항과 커밋한 사람을 추적할 수 있습니다.

커밋에는 일반적으로 변경 사항에 대한 간략한 설명인 커밋 메시지가 포함됩니다.

병합 충돌

분기 간에 발생한 차이점을 병합합니다.

병합 충돌은 사람들이 같은 파일의 같은 줄을 다르게 변경하거나 한 사람이 파일을 편집하고 다른 사람이 같은 파일을 삭제할 때 발생합니다.

분기를 병합하기 전에 병합 충돌을 해결해야 합니다.

가지를 밀다

분기를 원격 저장소로 성공적으로 푸시하면 원격 분기가 로컬 분기의 변경 사항으로 업데이트됩니다.

“브랜치를 푸시”하면 Git은 원격 저장소에서 브랜치의 HEAD 참조를 검색하고 해당 브랜치의 로컬 HEAD 참조의 직계 조상인지 확인합니다.

일단 확인되면 Git은 모든 객체(로컬 HEAD ref에서 도달할 수 있고 원격 리포지토리에서 누락됨)를 원격 객체 데이터베이스로 가져온 다음 원격 HEAD ref를 업데이트합니다.

원격 HEAD가 로컬 HEAD의 조상이 아니면 푸시가 실패합니다.

본점

메인웨어하우스는 Github에 있는 오픈소스 프로젝트의 메인웨어하우스를 의미합니다.

이것은 개인이 기여하고자 하는 프로젝트의 저장소이므로 개인은 일반적으로 쓰기 액세스 권한이 없습니다.

상류(업스트림).

내 창고

내 리포지토리(My github repository)는 Github의 계정에 존재하며 메인 리포지토리에서 포크된 리포지토리입니다.

로컬 저장소

로컬 git 저장소는 내 컴퓨터 회사에서 생성한 로컬 git 저장소를 말합니다.

작업 공간

작업공간은 실제로 내 컴퓨터에서 소스코드를 개발하고 수정하는 작업공간을 의미합니다.

Git 작동 방식

원래 힘내 프로젝트에 포함된 데이터는 파일 시스템의 스냅샷으로 볼 수 있습니다.

프로젝트의 실질적인 헌신과 적용을 중요시하는 순간이 특징입니다.

파일 자체를 저장하는 대신 수정 내역 자체를 저장합니다.

Git의 작동 방식을 제대로 이해하려면 Git 프로젝트의 세 가지 구성 요소를 이해해야 합니다.

  • 작업 목록: 작업 중이지만 커밋할 준비가 되지 않은 파일이 포함된 디렉터리입니다.

  • **준비 영역:** 커밋을 위해 파일이 업로드되는 영역이며 커밋 준비가 된 변경 사항이 Git 저장소에 기록되기 전에 대기하는 영역입니다.

  • 목차: Git 프로젝트의 메타 데이터 및 데이터 정보를 저장하는 디렉터리입니다.

현지의 보관 및 외딴 저장 구조


에 추가 : 현재 작업 디렉토리의 변경 사항 전체 또는 일부를 스테이징 영역으로 이동할 수 있습니다.

제출하다: 스테이징 영역의 커밋된 항목을 로컬 리포지토리(.Git 디렉터리)에 저장합니다.

자식 푸시: 로컬 리포지토리에서 원격 리포지토리로 콘텐츠를 업로드합니다.

이 작업을 수행하면 GitHub 홈페이지에 해당하는 분기에 저장됩니다.