올해 졸업 예정자가 되고나서 졸업 전 입사 서류를 여러 번 쓰고, 면접도 두 세번 정도 보았다.
그러나 모두 단골멘트인(귀하의 역량은 충분했으나, 한정된 채용인원으로 인해...) 탈락 메일과 문자가 와서 한숨쉬며ㅠ

인스타그램을 보다가 광고로 코드프레소를 처음 접하였다.
코드프레소에서 무료로 Java 웹 개발 트랙 체험단 지원자를 모집한다하여 늘 공부해야겠다 다짐한 Spring으로 프젝 경험을 쌓고자
급하게 하루 전날 자소서를 작성하고 다다음 날인가 면접을 보게 되었다.
면접은 크게 어렵지 않으며 학사 수준의 간단한 cs지식, 학업 열정 정도만 있으면 된다.
이후 메일로 합격 결과가 발송되어 현재 1주차인 Git과 Java의 입문 과정 이러닝을 수강하고 있다.
이번 포스팅은 코드프레소 Java 웹 개발 체험단 활동 중 실무자가 알려주는 Git 입문강의에 대해 알아볼려한다.
형상 관리
소프트웨어 개발 프로세스 각 단계에서 소프트웨어의 변경점을 체계적으로 추적하고 관리하는 일련의 모든 활동
형상 관리의 중요성
개발 제품이 무결하다는 것을 실시간으로 관리하고 추적하는 과정이며, 이를 통해 프로젝트의 리스크를 최소화하고
소프트웨어의 품질을 확보할 수 있다.

형상 관리의 대상
SW 개발 모든 단계에서 발생하는 산출물
- 서비스 정의서
- 요구사항 명세서
- 스토리보드, 와이어 프레임 등
- SW 설계 문서
- 소스코드 (구현 단계)
- API 문서, 개발자 가이드 문서
Git
소스코드를 효율적으로 관리하기 위한 형상 관리 도구이다.프로젝트 상황에 맞춰져서 만들 수 있는데 대중적으로많이 사용한다.
Git의 목표
- 빠른 속도
- 단순한 구조
- 비선형적인 개발 (수천 개 동시 다발적인 병렬 개발과 공유)
- 완벽한 분산
- Linux 커널과 같은 대규모 프로젝트 유용

중앙 집중형 버전 관리
원격 서버 안에는 공동으로 개발하는 소스 코드가 존재한다. A, B, C 각각의 개발자가 자신이 맡은 특정 코드를 가져와 개발하여 원격 서버안에 커밋한다.
분산 집중형 버전관리
마찬가지로 A,B,C 각각의 개발자안에도 동일한 풀셋의 소스 코드가 존재한다. 각 개발자가 수정하고 빌드하여 확인까지 할 수 있는 구조이며, 만약 원격 서버 안에 코드가 손실되도 다른 개발자의 코드로 복구가 쉽다.
※ Git은 커맨드 환경에서 구동
Git의 기본 용어
- 원격 저장소
- 로컬 저장소
- 클론
- 작업 디렉토리
- 스테이징 영역
- 커밋
만약 개발팀에 새로 합류하면?
개발자D가 개발팀에 새로 합류할려면 원격 저장소에 있는 소스코드를 받아야 한다.
소스코드를 받을려면 Clone을 하게 되는데
Clone은 원격 저장소의 소스코드를 로컬 저장소로 복사하는 과정이다.
Git에 있는 로컬 저장소는 3가지 영역으로 나뉜다.
- 작업 디렉토리
- 스테이징 영역
- 로컬 저장소
작업 디렉토리
- PC에서 현재 작업중에 있는 디렉토리이다.
- git에서 관리는 하지만, 추적은 하지 않는다.
스테이징 영역
- 작업한 내용이 올라가는 임시 저장 영역이다.
- git에 의해 변경점 추적 관리되는 영역이다.
- 커밋을 준비하는 영역
로컬 저장소
- 커밋들이 영구적으로 저장되는 영역
- 원격 저장소로부터 clone 한 커밋들이 존재하는 영역
커밋 (Commit)
- git에서 가장 의미있는 변경의 단위
- 변경의 단위는 개발자마다 조직마다 모두 다르다.
- 로컬 저장소로 저장하는 과정이다.
커밋 구성 요소
- commit id
- 개발자 정보
- commit를 반영한 날짜
- commit를 저장할 때의 내용 (관련 이슈, 테스트 방법 등등)
※ 허나, 개발자마다 스타일이 다르기에 commit의 내용은 다를 수 있다.
Git의 기본 플로우
- 원격 저장소의 소스코드를 복사 (clone)
- 작업 디렉토리에서 작업한 내용 (branch)
- 스테이지 영역에 추가한 후 (add)
- 의미있는 변경점이 쌓이면
- 최종적으로 커밋을 만든다. (commit)
- 로컬 저장소에 영구적으로 저장한다. (push 및 PR)
PULL
원격 저장소에 있는 다른 개발자의 커밋들을 받아온다.
PUSH
로컬 저장소에서 만든 커밋을 원격 저장소로 업로드한다.
Git의 기본 개념을 직접 실습을 통해 알아보았다.
- 기본 환경 설정
- 원격 저장소 생성
- 로컬 저장소 생성
- 기본 플로우 실습
- git을 통한 협업
기본 환경 설정
사용자의 이름, 이메일 기본 설정으로 등록한다.

이름 등록
git config --global user.name "이름"
이메일 등록
git config --global user.email "이메일주소"
기본 에디터를 vim으로 기본 설정
git config --global core.editor vim

설정 정보 확인
git config --global --list

설정한 데이터 중에서 수정이 필요한 경우
vi ~/.gitconfig //global config 설정파일
수정이 필요하면 i를 눌러 수정 후
변경 후 저장하고 종료하기 (esc버튼 + 하단에 :wq 입력)
※ 만약 저장하고 강제 종료를 하고 싶으면 :wq!, 저장 안하고 강제로 저장하고 싶으면 :q!를 하면 된다.
실습 사전 조건
- 본 강의 실습에는 ~/gittest 라는 폴더를 생성하여 기본 폴더로 사용한다.

mkdir ~/gittest // gittest 폴더 생성
cd gittest // gittest 폴더 이동

Git의 서비스
- 원격 저장소 관리
- 코드 공유
- 코드 리뷰
- 이슈 관리
- 팀원 관리
- 커뮤니케이션 협업 도구
- 위키

github Trending 페이지
트렌딩 페이지에서는 최근 인기있는 repo를 확인할 수 있다.

이번 코드프레소 강의를 통해 Trending 페이지는 처음 접해보았다.
참고하기도 좋고 코드뿐만 아닌 사진의 면접 관련한 내용도 접할 수 있어서 종종 한 번씩 이용을 할듯하다:)
GitLab

- Private 저장소로 운영해도 무료 (Community)
- 상용화 SW에 유용
- 주로, 기업에서 인트라넷에 연결해서 사용
회원 가입 이후, 첫 화면으로 들어가면

이와 같은 페이지에서 Create a project를 클릭한다.

이와 같이 새 프로젝트를 생성하여 원격 저장소와 연결을 할 것이다.

오른쪽에 Clone 버튼을 눌러 HTTPS Url를 Copy하여 git에서 명령어를 실행해 프로젝트를 복사할 수 있다.

mkdir my_project
ls -al // 파일 및 디렉터리의 접근 권한, 사용자, 날짜 등 관련 정보를 알고 싶을 때
로컬 저장소 초기화
git init
Initialized empty Git repository in 해당 파일 경로/.git
git의 핵심 폴더인 .git 폴더 생성
master 라는 기본 브랜치가 생성된다.

.git 폴더
Git은 .git 폴더를 통해 해당 프로젝트에서 변경되는
파일들에 대해 추적/관리를 할 수 있다.
로컬 저장소 구분
- 작업 디렉터리 (Working Directory)
- 스테이징 영역 (Staging Area)
- 로컬 저장소 (Local Repository)
원격 저장소와 연결하기
git remote add [저장소 별칭] [저장소 주소]
[저장소 별칭] 은 저장소에 쉽게 접근하기 위한 일종의 변수(default, origin)
원격 저장소를 origin 이름으로 연결
git remote add origin 'http 클론 주소'
현재 등록된 원격 저장소를 알고 싶다면?

git remote -v
코드프레소 URL: https://www.codepresso.kr/
※ 진지하게 작성해본 첫 포스팅이지만 아직 많이 부족합니다. 수정 사항이나 관련 피드백은 댓글로 적어주시면 수정하고 반영하도록 하겠습니다.
'Git' 카테고리의 다른 글
[Git] .gitignore 새로 반영하기 (0) | 2022.11.07 |
---|---|
[Git] Git을 활용한 프로젝트 관리 (2) | 2022.01.19 |