Git 용어

  • 작업 트리 : 작업 중인 프로젝트가 들어 있는 중첨된 디렉토리와 파일의 집합
  • 저장소 : 작업 트리의 최상위에 위치한 디렉토리, 모든 기록과 메타데이터를 보관
  • 해시 : 해시 함수에 의해 생성된 숫자로, 파일이나 다른 객체의 내용을 고정된 숫자로 나타냄. Git은 160비트 길이의 해시를 사용
  • 객체 : 블롭객체 - 일반 파일, 트리객체 - 디렉토리, 커밋객체 - 특정 버전,

SCM 소프트웨어 구성 관리 시스템 = VCS

git merge --abort
현재 진행중인 merge를 모두 삭제하고 merge를 시도하기 전으로 되돌림.

개인 저장소
본인, 본인이 명시적으로 접근 권한을 공유한 사람, 조직 저장소의 경우 특정 조직 구성원만 접근 가능

Github 계정 유형

Personal

  • Github Free, Github Pro
  • Guthub Free 사용자의 경우 개인 계정이 소유한 비공개 저장소는 제한된 기능 사용가능

Organization

  • 계층적 접근 방식
  • 조직 소유자 및 보안 관리자만이 조직의 설정을 관리 및 데이터에 대한 액세스 제어

Enterprise

  • 관리자가 여러 조직의 정책과 청구를 중앙에서 관리하고 조직간의 내부 소싱을 활성화
  • 조직 수준에서 정책에 사용할 수 있는 옵션 제어
    • SSO를 통한 인증
    • 보안, 규정 준수 및 배포 제어 강화
    • Github Actions를 사용한 비공개 또는 내부 저장소에 대한 배포 보호 규칙 Github Connect
  • Github Enterprise Server - 조직이 인프라를 완벽하게 제어
  • Github Enterprise Cloud

Github 청구

  • 구독 : Github Pro, Github Team과 같은 사용자 계정 플랜과 Github Copilot, Github Marketplace와 같은 월별 비용이 발생하는 유료 제품 포함
  • 사용 기반 청구 : 유료 제품의 비용이 제품을 얼마나 많이 사용하느냐에 따라 달라질 때 적용

Github Copilot

  • ChatGPT와 유사한 경험 제공

    개발자 시나리오에 초점을 맞춘 편집기에 채팅 인터페이스를 제공하여 VS Code, Visual Studio와 기본적으로 통합됨.
    개발자가 입력한 코드, 표시된 오류 메세지를 인식하며 IDE에 내장되어 있다.
    개발자는 코드 블록이 수행하려는 작업에 대한 심층 분석 및 설명을 얻고, 단위 테스트 생성, 버그에 대한 제안된 수정사항을 얻을 수 있다.

  • Pull Request를 위한 Copilot

  • 문서에 대한 AI 생성답변

  • 명령줄 인터페이스를 위한 copliot

  • Github Copilot Business

  • 회사에서 누가 Github Copilot을 사용할 수 있는지 제어할 수 있다.

  • Github Copilot Enterprise

    조직을 위한 추가 개인화 계층과 개발자가 플랫폼 전체에서 코드베이스와 작업 버튼에 대해 대화할 수 있도록 하는 채팅 인터페이스로 Github와 통합

Github Codespace

Codespace를 만드는 방법

  • Github 템플릿이나 Github.com의 템플릿 저장소를 이용해 새로운 프로젝트 시작
  • 저장소의 브랜치에서 새로운 기능 작업
  • 공개된 풀 리퀘스트를 통해 진행 중인 작업 살펴보기
  • 저장소 기록의 커밋에서 특정 시점의 버그 조사

일시적으로 Codespace를 사용하여 코드 테스트, 동일한 Codespace로 돌아와 장기적으로 실행되는 기능 작업을 진행할수도 있다.

Github.dev Github Codespace
비용 무료 개인 계정에 대한 월간 무료 한도
유효성 Github.com의 모든 사람이 사용가능 Github.com에 가입한 모든 사람이 사용가능
스타트업 키를 한번만 누르면 즉시 열고, 구성이나 설치 없이 바로 사용 가능 Codespace를 만들면 VM 할당이 됨. 개발환경을 만드는데 몇 분 걸림
계산 컴퓨팅 리소스가 없으므로 코드를 빌드, 실행, 터미널 사용 불가 VM을 활용하여 실행 및 디버깅 가능
터미널 접근 불가능 가능
확장 웹에서 실행할 수 있는 확장 프로그램 하위집합만 사용가능 Visual Studio Code Marketplace 확장 사용가능

Github Project

Project Project Classic
테이블과 보드 보드, 목록, 타임라인 레이아웃 보드
데이터 텍스트, 숫자, 날짜, 반복 및 단일 선택과 같은 사용자 정의 필드별로 정렬, 순위 지정 및 그룹화 열과 카드
인사이트 과거 및 현재 차트를 통해 작업을 이해하는데 도움이 되는 시각적 자료 생성 프로그레스 바
오토메이션 GraphQL API, 작업 및 열 사전 설정을 사용하여 프로젝트 관리 이슈 및 풀리퀘스트 추가, 편집 또는 닫힐 때의 열 사전 설정 구성

Inner Source

제한된 대상을 가진 프로젝트에 오픈소스 패턴을 적용하는 관행.

ex) 어떤 회사는 일반적인 오픈소스 프로젝트의 구조를 반영하는 InnerSource 프로그램을 만들수 있지만, 그 회사의 직원만 접근할 수 있다.

회사의 방화벽 뒤에 있는 오픈소스 프로그램

InnerSource의 이점

  1. 투명성 장려

    다른 회사 프로젝트의 소스코드에 대한 액세스는 생산성을 높이는데 도움이 될 수 있다. 다른 팀이 직면한 것과 유사한 문제를 어떻게 해결했는지와, 재사용할 수 있는 코드와 자산을 찾을 수 있다.

  2. 마찰을 줄인다

    소비자 팀이 다른 팀이 소유한 프로젝트의 버그 수정이나 새로운 기능에 의존하는 경우, 그들은 필요한 변경사항을 제안할 수 있는 채널을 가질 수 있다.

  3. 관행을 표준화

    InnerSource 프로그램을 구축하는 것은 동일한 관행을 따르지 않더라도 모든 개발 팀에서 사용할 수 있는 표준 규칙을 채택할 수 있는 좋은 기회이다.

저장소 가시성 및 권한 설정

  • 공개 저장소 : 이 가시성은 진정으로 오픈소스이며, 조직 내부, 외부 사람들에게 액세스를 제공하는 프로젝트에 사용
  • 내부 저장소 : 소유한 조직의 구성원에게만 표시. InnerSource 프로젝트에 이 가시성을 사용
  • 비공개 저장소 : 소유자 및 그들이 추가한 팀 또는 개인에게 표시. 특정 사용자와 그룹만 액세스 할 수 있는 프로젝트에 이 가시성을 사용

권한 수준

  • 읽기 : 프로젝트를 보거나 논의하고 싶은 비코드 기여자에게 권장
  • 트리아지 : 쓰기권한 없이 이슈와 풀리퀘스트를 적극적으로 관리하는 기여자
  • 쓰기 : 프로젝틍 ㅔ적극적으로 참여하는 기여자
  • 수준 유지 : 민감하거나 파괴적인 작업에 접근하지 않고 저장소를 관리하는 프로젝트 관리자
  • 관리자 : 프로젝트에 대한 전체 액세스 권한

안전한 Github 저장소를 유지하는 방법

보안 애플리케이션을 빌드하고 배포하는 데에 고려해야 할 세가지 사항

  • 일반적인 지식 문제

    많은 개발자와 직원들이 보안을 이해한다고 생각하지만, 실제로 그렇지 않다. 지속적인 교육 및 훈련 프로그램이 필수적이다.

  • 코드는 올바르고 안전하게 생성되어야 함

    기능이 보안을 염두에두고 설계되었는지도 확인해야 한다.

  • 애플리케이션은 규칙과 규정을 준수해야 함

    코드를 빌드하는 동안 준수 여부를 테스트하고 배포 후에도 주기적으로 다시 테스트 해야한다.

보안 탭 기능

Github는 저장소와 조직 전반에서 데이터를 안전하게 유지하는데 도움이 되는 보안 기능을 제공한다.

  • SECURITY.md 저장소에 파일을 추가하여 프로젝트의 보안 취약점을 보고하는 방법을 지정할 수 있는 보안 정책
  • Github에서 저장소가 취약한 종속성이나 멀웨어를 사용하고 있음을 감지하면 알려주는 Dependabot 알림
  • 코드의 취약점과 오류를 찾고, 분류하고, 수정하는데 도움이 되는 코드 스캐닝

Github Authentication

Github에서 인증하는 데에는 여러가지 옵션이 있다.

  • 사용자 이름과 비밀번호
  • 개인 액세스 토큰 (PAT)
  • SSH 키

Github의 추가 보안 옵션

  • 2FA
  • SAML SSO
  • LDAP
    Lightweight Directory Access Protocl(LDAP)는 디렉토리 정보 서비스에 액세스하고 유지하기 위한 애플리케이션 프로토콜. 타사 소프트웨어를 대기업 사용자 디렉토리와 통합하는데 사용되는 가장 일반적인 프로토콜

팀 권한 수준

권한수준 설명
회원 팀원들은 조직원들과 동일한 능력이 있다.
유지 관리자 팀 유지 관리자

조직 권한 수준

권한수준 설명
소유자 조직 구성원이 할 수 있는 모든일을 할 수 있다. 조직에서 최소 두명으로 제한
회원 조직 저장소와 팀을 만들고 관리
중재자 조직이 소유한 공개 저장소에서 비회원 기여자를 차단 및 해제, 상호작용 제한 설정, 댓글 숨기기
청구 관리자 청구 정보를 보고 편집
보안 관리자 조직 전체에서 보안 알림과 설정 관리
외부 협력자 컨설턴트나 임시 직원과 같은 외부 협력자는 하나 이상의 조직 저장소에 액세스 가능

엔터프라이즈 권한 수준

권한수준 설명
소유자 완벽한 제어
회원 조직 회원과 동일한 능력
청구 관리자 기업의 청구 정보만 보고 편집 가능

CODEOWNERS 파일 추가

팀원이나 전체 팀을 저장소의 코드를 담당하는 코드 소유자로 지정 가능. 누군가가 코드 소유자에게 속한 코드를 수정하는 풀 리퀘스트를 열면 코드 소유자는 자동으로 검토자로 요청 됨

+ Recent posts