개발하는 무민

[코드프레소] Java 웹개발 트랙 체험단 - 01강 Git 입문 - 이론 본문

Project/[코드프레소] JAVA웹개발트랙

[코드프레소] Java 웹개발 트랙 체험단 - 01강 Git 입문 - 이론

무민_ 2022. 1. 13. 13:39

코드프레소에서 진행하는 Java 웹개발 트랙 체험단 활동을 진행하게 되었다.

3월까지 알차게 열심히 공부해서 프로젝트를 하나 제대로 해보고싶다.

 

해당 체험단은 이러닝과 라이브 줌 수업, 오프라인 수업등으로 구성되어 있고

매주 이러닝을 통해 동영상 강의를 학습한 뒤 과제를 풀어보고 최종적으로는 프로젝트를 진행하는 형태이다.

 

이러닝을 통해 배운 내용은 정리해서 블로그 포스팅으로 남기고자 한다.

 

코드프레소 URL : https://www.codepresso.kr/

 


 

 

 

01. 형상관리와 Git

1. 형상관리를 위한 Git

형상 : 사물의 생긴 모양이나 상태

 

- 소프트웨어의 형상

    와이프레임 : 서비스기획서, 설계서등을 바탕으로 사용자가 어떻게 우리 서비스를 이용할 것인지 설계하는 과정이며      UI UX를 입히는 과정에서 산출되는 문서.

    플로우차트 : 서비스의 흐름을 작성. 만들고자 하는 화면이 어떤 흐름과 로직으로 실행되는지

    소스코드 : low레벨의 형상. 만들고자 하는 서비스가 실제 실행되기 위한 프로그래밍 과정

    → 이는 요구사항등에 의해 지속적으로 변한다.

 

형상은 변하는 과정이 계속 반복되면서 소프트웨어가 생성된다.

이 변경점들을 관리하는 것은 매우 중요한 업무이다. -> 이를 형상관리라고 한다.

소프트웨어의 변경점을 체계적으로 추적하고 관리하는 일련의 모든 활동을 SCM softreware configuration management이라고 칭한다.

 

- 형상관리의 중요성

프로젝트의 리스크 최소화, 소프트웨어의 품질 확보를 위함이다.

 

- 형상관리의 대상 (SW개발 모든 단계에서 발생하는 산출물)

  • 서비스정의서
  • 요구사항 명세서
  • 스토리보드
  • 와이어프레임
  • SW설계문서
  • 소스코드
  • API 문서, 개발자 가이드 문서

-> 우리가 배울 Git은 소스코드를 효율적으로 관리하기 위한 형상관리 도구이다.

(버전관리도구라고도 한다.)

 


- git의 목표

  • 빠른속도
  • 단순한구조
  • 비선형적인 개발
  • 완벽한분산
  • 리눅스커널과 같은 대규모 프로젝트에 유용

 

- 중앙 집중형 버전 관리 CVCS(Centralized Version Control System)

원격 서버 안에는 공동으로 개발하고 있는 소스코드 풀셋이 존재한다.

각각의 개발자들은 특정 파일을 가져와서 개발 작업을 진행한다.

작업이 완료되면 변경점들을 원격 서버로 내보내는 구조가 중앙 집중형 버전 관리이다.

→ 직관적이고 간단함. 주요한 데이터가 중앙 서버에 모여있게 된다.

그러나 네트워크가 끊기면 협업이 불가해지고, 만약 원격 서버에 장애가 생겨서 손실이 되면 복구하기가 어렵다는 단점이 있다.

 

- 분산 집중형 버전 관리 DVCS(Distributed Version Control System)

Git 에서 사용하는 방식이다.

원격 서버 안에는 공동 개발중인 풀셋의 소스코드가 존재한다.

각 개발자들의 로컬 저장소 안에도 동일한 풀셋의 소스코드가 존재한다.

동일한 파일에 대해 각 개발자들이 직접 수정하고 확인이 가능하다.

네트워크가 없어도 자신의 로컬 저장소에서 작업이 가능하고, 네트워크를 연결하면 원격 서버로 내보낼 수 있다.

원격 서버의 저장소가 손실되어도 다른 로컬 저장소의 데이터를 복원하면 되기 때문에 관리가 쉽다.

 


2. Git 시작하기

Git을 설치 한 뒤 Git Bash를 실행한 화면!

Git의 설치여부와 버전을 확인하기 위해서는 다음의 명령어를 치면 된다.

git --version

3. Git 사용을 위한 기본 용어의 이해

- Git 이해를 위한 기본 용어

  • 원격저장소 : 원격 서버에 있는 저장소
  • 로컬저장소 : 각 개발자들이 작업을 하는 개인 PC공간
  • 클론 : 원격 저장소의 소스코드를 로컬 저장소로 복사하는 과정

 

- 로컬 저장소는 3개로 다시 나뉜다.

  • 작업 디렉토리 : PC에서 현재 작업중인 디렉토리
  • 스테이징 영역 : 의미있는 변경점이 생기면 임시로 소스코드를 저장하는 공간. 작업한 내용이 올라가는 임시 저장 영역이기도 하며 커밋을 준비하는 영역이다.

-> 커밋들이 영구적으로 저장되는 영역이 로컬저장소이다.

  • 커밋 : 변경점을 로컬 저장소로 저장하는 과정 (보통 '커밋한다' 라고 한다.)

커밋시에는 왜 이 커밋을 발생했는지 등의 내용을 기술할 수 있다.

(개발자 이름, 이메일, 시간 등이 자동으로 기록된다.)

 

TensorFlow : 구글에서 제공하는 오픈소스 딥러닝 라이브러리

 

- git의 기본 플로우

  1. 원격 저장소의 소스코드를 다운로드해서 (clone)
  2. 작업 디렉토리에서 작업한 내용을
  3. 스테이지 영역에 추가한 후 (add)
  4. 의미있는 변경점이 쌓이면
  5. 최종적으로 커밋을 만들어 (commit)
  6. 로컬 저장소에 영구적으로 저장한다.

→ 깃을 사용하는 기본 플로우이다.

그림으로 설명하면 위와 같다.

여기까지는 로컬저장소 내부에서 발생하는 플로우이다.

개발자들은 각자 자신의 PC에서 개발하여 커밋을 통해 원격 저장소에 저장한다.

 

  • Pull : 원격 저장소에 있는 다른 개발자의 커밋들을 받아오거나 가져오는 것을 Pull 이라고 한다.
  • Push : 로컬저장소에서 만든 커밋을 원격 저장소로 업로드하는 것을 Push 라고 한다.

 


4. Git 기본 개념 실습 Part 1 (기본환경설정, 원격저장소)

 

- 이름과 이메일 등록하기

 

- 기본 에디터를 vim으로 설정

- 등록된 설정 정보 확인

 

글로벌 변수로 선언한 데이터는 위의 파일에 저장되어 있으며,

변경하려면 해당 명령어를 통해 접근하면 된다.

vi ~/.gitconfig

 

명령어를 입력하면 위와 같은 에디터 화면이 나타난다.

- 원격 저장소 생성하기

$ mkdir ~/gittest

$ cd gittest

 

 

- 원격 저장소의 효율적 관리를 지원하는 웹기반의 플랫폼 서비스는 아래와 같다.

  • github
  • gitLab
  • Bitbucket(atlassian)

 

- 원격 저장소 관리, 코드 공유, 코드 리뷰, 이슈관리, 팀원관리, 협업 도구등의 역할을 한다.

  • github전세계 개발자들이 하나의 프로젝트를 개발하는 것이 가능하다.
  • 오픈소스 프로젝트로 협업하는 경우 무료로 사용 가능.

 

- git도 오픈소스 프로젝트로 개발되었기 때문에 코드를 직접 확인할 수 있다.

  • gitLab주로 기업에서 인트라넷에 연결해서 사용하는 형태이다.
  • 상용화 SW에 유용하다.
  • gitLab을 통해 원격 저장소 생성하기

* 내가 만든 GitLab 프로젝트!

https://gitlab.com/hjuwon0605/codepresso

 

황주원 / codepresso

codepresso test

gitlab.com

 

- Git bash를 통해 로컬 저장소 생성하기

테스트 폴더 밑에 프로젝트 디렉토리 생성하기.

새로 만든 디렉토리이므로 비어있다.

 

- 로컬 저장소 초기화

$ git init

폴더 옆에 master라는 표기가 생긴다.

$ ls -la를 다시 실행해보면, .git 폴더가 생성된 것을 볼 수 있다.

 

 

- git 폴더

git은 .git 폴더를 통해 해당 프로젝트에서 변경되는 파일들에 대해 추적하고 관리할 수 있다.

 

 

- 로컬 저장소와 원격 저장소(gitlab) 연결하기

$git remote add [원격저장소별칭][원격저장소주소]

별칭은 기본값으로 origin을 많이 사용한다.

GitLab의 Clone 버튼을 통해서 원격 저장소에 접근할 수 있는 주소를 확인할 수 있다.

 

지정된 저장소를 확인하기 위한 명령어.


 

https://www.codepresso.kr/

 

 

#코드프레소 #codepresso #대외활동 #IT교육 #코딩강의 #코딩이러닝, #무료IT교육, #무료코딩교육