🐯
경민민 IT 핸드북
  • Orientation
    • 전달사항
    • 복습방법
    • 수료한 선배의 한마디
    • 간단 자기소개
    • 스터디
  • 백엔드
    • Java
      • 1장 프로그래밍 기초
      • 2장 자바 메모리구조
        • 1. Stack
        • 2. Heap
      • 6장 객체
      • 8장 상속
      • 9장 다형성
      • 10장 추상클래스와 인터페이스
      • 13장 Generic
      • 14장 Thread
      • 15장 Network
      • 16장 Lamda
        • 1. 내부 클래스 (Inner Class)
          • DTO , VO, Builder Pattern
        • 2. 람다 표현식 (Lambda Expression)
        • 3. 스트림 API (Stream API)
          • Optional
      • 17장 Enum
  • 프론트
    • Node.js
    • Java Script
      • ES6+
        • Node.js로 자바스크립트 실행
        • let , const , var
        • Destructuring문법
          • Rest(...) 문법
        • Arrow Function
        • 모듈
        • ETC
    • Type Script
      • 개요
      • TS설치 및 환경설정
      • 타입스크립트 기본
        • 기본 자료형들과 타입추론
        • Object, Array , Tuple
        • Any, Unknown, Union Type
        • Function Type
          • Type Assertion && Narrowing
          • Never type
        • Type Aliases와 Interface
        • 리터럴 타입
        • 함수 추가 문법
        • Class문법
        • 객체 타입 추가 문법
        • 실습문제 1차
        • 실습문제 2차
        • 실습문제 3차
    • React
      • 개요
      • SPA 와 MPA
        • SEO(작성예정)
      • 리액트 프로젝트 생성(18.3.1.ver)
        • HTML + react 샘플
        • CRA 와 Vite 비교
      • 리액트 개념들
        • Component
          • 클래스 컴포넌트(작성예정)
          • 함수형 컴포넌트(작성예정)
        • JSX
        • React Virtual Dom
          • Reconciliation
        • hook
          • useState
        • 리액트 데이터 전달
          • FLUX
      • 백엔드 서버 연동
        • 비동기요청
        • 웹소켓
        • Promise(작성예정)
      • 실습문제 1
      • 실습문제 2
      • 실습문제3
      • 실습문제4
  • 프레임워크
    • Spring
      • Spring 개발환경 구축
        • 프로젝트 환경설정
        • 프로젝트 생성
          • MVC Project 생성이슈
        • Maven 설정
        • web.xml 설정
        • Spring Bean Configuration.xml 설정
      • Spring Legacy Project
        • Spring 요청 및 응답 흐름
        • Spring 주요 Annotation
          • 의존성 주입방식의 차이점
          • @ModelAttribute와 유효성검사
          • 비동기처리
          • 스프링 예외처리
        • Logging
        • Pagination
        • Spring File 업로드 및 다운로드
        • Spring WebSocket
        • Spring AOP
      • Spring 라이브러리들(작성예정)
        • Lombok
        • Maven
        • MyBatis
      • Spring 구성 모듈(작성예정)
      • 스프링 과제
    • Spring Boot
      • Spring Boot 개발환경 구축
      • 스프링 부트 프로젝트 생성방법들
        • 프로젝트에서 사용하는 의존성들
      • 스프링 프로젝트 구조
        • SpringBootApplication
      • application.properties
      • Cross Origin
        • CORS
      • WebSocket
        • Stomp(작성중)
      • 로그인(작성중)
      • Spring Security(작성중)
      • 실습문제 Select
      • 실습문제 Update
      • 실습문제 Delete
  • 형상관리(Git)
    • GitHub설정
    • SourceTree를 활용한 깃허브 연동
      • 소스트리 설치
      • Clone
      • Branch
        • Branch Protection rules
          • Branch Protection Rules 상세규칙
        • Rebase 와 Squash (작성예정)
      • Team Project 설정
        • 팀장 프로젝트 셋팅
          • Collaborator
          • .gitignore 설정
        • 팀원 프로젝트 셋팅
        • 공통 프로젝트 진행
  • 프로젝트
    • 진행순서
      • 요구사항 분석 단계
        • 유용한 사이트
      • 프로그램 설계 단계
        • 유용한 사이트
      • 프로그램 구현단계
        • SourceTree를 활용한 Team Project설정
      • 테스트 단계
  • 배포
    • AWS-EC2 배포 연습
    • DevOps
      • IT시스템의 변화와 DevOps
      • DevOps 라이프사이클
    • 젠킨스
      • 도커
        • 도커 설치 방법
        • 도커 기본 명령어들
      • 젠킨스 설치
      • 젠킨스 프로젝트 생성
      • 젠킨스 소스코드 통합 - Github
      • 젠킨스 빌드 설정 - Maven
      • 배포 서버 구축하기
      • 파이프라인 구축
      • AWS 서버 생성
        • AWS 인스턴스 생성
        • AWS - Zenkins 연동
        • AWS - 배포서버 연동
        • AWS - Jenkins CI/CD파이프라인 구축
  • 유용한 사이트 모음
  • SQL
    • SQLD
      • 데이터 모델링의 이해 - 스키마
      • 데이터 모델링의 이해 - ERD
      • 데이터 모델링의 이해 - 정규화
      • 데이터 모델링의 이해 - NULL
      • SQL 기본 및 활용 - WINDOW FUNCTION
    • Oracle
      • 1장 개요
      • 2장 SQL
  • LLM 서비스
    • 1장 LLM에 대한 이해
    • 2장 프롬프트 엔지니어링
      • 프롬프트와 프롬프트 엔지니어링
      • GPT PlayGround
      • 프롬프트 작문 유형
      • 기본 프롬프트 엔지니어링 태크닉
      • 고급 프롬프트 엔지니어링 태크닉
        • ReAct Prompting
        • Active-Prompt
        • Reflexion
        • Graph Prompt
      • OpenAI API설정
      • OpenAI를 활용한 프롬프트 엔지니어링 실습
        • 실습 프롬프트
    • 3장 Lang Chain 프레임워크
      • LangSmith 프레임워크
        • LangSmith를 활용한 LangChain 모니터링 설정
      • LangChain 실습 1 - Prompt
        • 실습 코드
      • LangChain 실습 2 - LLM 캐시와 메모리
    • 4장 RAG
      • Document Loader - 문서 로더
      • Text Splitter - 텍스트 분할
      • Embedding - 임베딩
      • Vector Store - 벡터 저장소
      • Retriever - 검색기
      • ReRanker - 재평가자
      • RAG
Powered by GitBook
On this page
  • Intro
  • 1. 형상관리
  • 2. Git
  • 3. GitHub
  • 4. Git의 구조와 명령어들
  • 1) 구조
  • 2) Working Directory
  • 3) Staging Area
  • 4) Local Repository
  • 5) Remote Repository
  • 5. Branch

형상관리(Git)

Previous실습문제 DeleteNextGitHub설정

Last updated 10 months ago

Intro

  • 학생시절 레포트를 제출해야할때나, 상사에게 보고해야할 보고자료를 작성할때 위처럼 직접 보고자료에 대한 버전관리를 수행해본 경험이 있을 것이다.

  • 단순 파일이나 보고서라면 상관 없겠지만, 복잡한 소프트웨어의 변경이력을 관리하기 위해서는 형상관리에 대한 개념과 형상관리를 지원하는 도구들에 대해 이해하고 다룰 줄 알아야 한다.

1. 형상관리

  • 소프트웨어의 변경사항을 체계적으로 관리하고 통제하는 것.

  • 변경사항이라 함은 파일의 추가, 삭제 뿐만 아니라 파일 내부의 소스코드의 수정내용 또한 포함 된다.

  • 시간이 지남에 따라 변해가는 소프트웨어의 변경사항들을 관리하면서 소프트웨어의 형상을 체계적으로 관리하고 유지하므로 형상관리를 지원하는 도구를 "형상관리 시스템"이라고 부른다

2. Git

  • 대표적인 형상관리 도구

  • 소스코드를 저장하고 이력을 관리하는 저장소(repository)이다.

  • 원하는 시점에 소스코드를 저장하거나, 저장지점으로 돌아가는 기능을 제공하여 프로젝트의 버전을 관리할 수 있다.

  • 여러 pc에 소스코드를 저장시키거나 여러 pc에 저장한 내용을 하나로 병합하는 것이 가능하다.

3. GitHub

  • Git을 웹으로 이용할 수 있게 만든 원격 저장소(remote repository)이다.

  • 여러 개발자가 하나의 원격 저장소를 이용하여 소스코드를 내려받거나, 병합하는 행위가 가능하다. 즉 프로젝트 단위로 하나의 원격저장소를 이용하여 협업이 가능한 것이다.

4. Git의 구조와 명령어들

1) 구조

2) Working Directory

  • 프로젝트를 진행하는 폴더를 의미하며, Working Directory내부에서 소스코드 변경 후 저장 시(ctrl+s) 자동으로 git add 명령어가 실행되며, "변경사항"을 Staging Area로 전달됨.

  • Local Repository에 저장된 소스코드를 현재 프로젝트에 merge명령어를 통해 병합가능하다.

  • checkout 명령어를 통해 작업 Branch 변경도 가능하다.

3) Staging Area

  • 변경된 코드가 Local Repository에 저장되기 전에 머무르는 중간영역 이다. Local Repository에 저장할 파일을 선택하고 commit 명령어를 통해 저장할 수 있다.

  • 저장하기 싫다면 변경 전 코드로 돌아가면 자동으로 Staging Area에서 제외된다.

4) Local Repository

  • 내 컴퓨터(PC)내에 존재하는 저장소이다. 소스코드의 변경/추가등의 이력을 기록한다.

  • Local Repository에 저장된 내용은 push 명령어를 통해 Remote Repository로 밀어 넣을수 있고 fetch 명령어를 통해Remote Repository에서 당겨 올 수 도 있다.

  • fetch와 merge를 합친 pull 이라는 명령어도 존재한다. 단 pull을 통한 자동병합보다는 fetch후 수동병합을 권장한다.

5) Remote Repository

  • Git Hub에 존재하는 저장소이다.

5. Branch

  • Git에는 Branch를 통해 하나의 저장소 내에 여러 버전을 만들어 작업할 수 있다.

  • 협업시 master브랜치를 여러개로 나누어 각 개발자는 독립적인 작업을 진행한다.

  • 각 branch로 가져간 코드는 원본에 영향을 미치지 않으므로 자유로운 작업이 가능하며, branch의 변경된 내용만 master 에병합 시키는 PR(Pull Request)를 보낼 수 있다.

  • 프로젝트에 참여한 개발자들은 PR이 들어온 경우 요청 내용을 다같이 검토(Review)한다

  • 문제가 없다면 PR(Pull Request)승인 후 변경 내용을 master에 병합한다

git
Git Flow구조