[Code.presso] 1주차-1. 실무자가 알려주는 Git 입문

sorzzzzy·2022년 1월 12일
0
post-thumbnail

Code.presso Java 웹 개발 트랙 체험단 활동을 본격적으로 시작했다!

이번주 내내 강의를 들으며 학습하고 난 뒤 든 생각은, "강의 퀄리티가 생각보다 훨씬 더 높았고, 개념을 확실히 익힐 수 있는 다양한 실습들이 있어서 좋았다!" 였다.

무엇보다도 Code.presso Java 웹 개발 트랙 체험단 활동중 가장 만족스러웠던 부분은, 강의 자체를 실무 개발자분들께서 진행하셔서 그런지 개념도 개념이지만 필요하거나 중요한 부분을 더 콕!콕! 잘 집어주셨다는 것이다👍🏻👍🏻

1주차 첫번째 코스로 수강한 강의는 Git 형상 관리에 관한 내용이었다.
강의 제목은 "실무자가 알려주는 Git 입문"으로, 자세한 정보는 👇🏻아래👇🏻 링크를 통해 확인할 수 있다.

📌 실무자가 알려주는 Git 입문 - 강의 정보

지금부터 복습도 할 겸, 강의 내용을 정리해 보며 내용을 다시 한번 확실히 이해해 보도록 하겠다!

✋🏻 포스팅 내 사용된 사진 파일들의 저작권은 모두 코드프레소에 있으며, 강의자료 공유 및 업로드는 불가능합니다.


형상🤔?

일반적인 형상의 뜻은 사물의 생긴 모양이나 형태를 뜻한다.

그렇다면 소프웨어의 형상은 무엇일까?
➡️ 일반적인 형상의 뜻과 비슷하게, 소프트웨어에서의 형상은 소프트웨어의 모양이나 상태를 의미한다.

위 사진과 같이 소프트웨어의 형상은 계속해서 변하고 있고, 소프트웨어 개발 프로세스 각 단계에서 소프트웨어의 변경점을 체계적으로 추적/관리하는 일련의 모든 활동형상관리라고 한다.

소프트웨어 개발 모든 단계에서 발생하는 모든 산출물(소스코드, 관련 문서 등)은 곧 형상관리의 대상이 될 수 있다.

우리가 만들고자 하는 제품이 무결하다는 것을 실시간으로 관리/추적하기 때문에 프로젝트의 리스크를 최소화하고 소프트웨어의 품질을 확보할 수 있는데 이를 통해 우리는 형상관리가 얼마나 중요한 것인지 짐작할 수 있다!


Git🌟

개발자라면 무조건 들어봤을 것이다.
Git!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Git소스코드를 효율적으로 관리하기 위한 형상 관리 도구이자, 버전 관리 시스템이기도 하다.

빠른 속도, 단순한 구조, 비선형적 개발, 완벽한 분산 등 많은 장점을 가지고 있다.

Git 의 기본 용어부터 기본 플로우 이해, 협업을 위한 간단한 실습까지 모두 진행됐지만!
개인적으로 중요하다고 생각하는 부분을 기준으로 간단히 정리해보겠다.


Git 의 개념을 잡기 위한 실습은

기본 환경 설정 ➡️ 원격저장소 생성 ➡️ 로컬저장소 생성 ➡️ 기본 플로우 실습 ➡️ Git을 통한 협업

이러한 과정으로 진행되었다.

여기서 간단하게 Git의 기본 개념, 원격/로컬 저장소 생성 부분과 Git을 통한 협업 부분만 다시 짚고 넘어가겠다!


1️⃣ Git의 기본 개념

✔️ 저장소(Repository)
저장소에는 원격 저장소(Remote Repository)로컬 저장소(Local Repository) 가 있다.
원격 저장소는 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소이고,
로컬 저장소는 파일이 개발자 PC에 저장되어 관리되는 개인 전용 저장소이다.


✔️ 클론(Clone)
클론은 원격 저장소의 소스코드를 로컬 저장소에 복사하는 과정이다.
git clone [원격저장소 주소] 명령어를 사용한다.


✔️ 로컬 저장소의 구조
로컬 저장소는 크게 작업 디렉토리, 스테이징 영역, 로컬 저장소 로 나뉘어진다. 하나하나 간단히 정리해보겠다.

1) 작업 디렉토리(Working Directory)

  • PC에서 현재 작업중인 디렉토리이다.
  • Git 에서 관리는 하지만 추적은 하지 않는다.

2) 스테이징 영역(Staging Area)

  • 작업한 내용이 올라가는 임시 영역으로 커밋을 준비하는 영역이기도 하다.
  • Git 에 의해 변경점 추적이 관리되는 영역이다.
  • git add [파일명] 명령어를 통해 실행한다.

3) 로컬 저장소(Local Repository)

  • 커밋들이 영구적으로 저장되는 영역이다.
  • 원격 저장소로부터 clone한 커밋들이 존재하는 영역이다.
  • git commit 명령어를 통해 실행한다.

로컬 저장소의 구조와 간단한 흐름을 사진으로 표현하면 이렇다!
git add 를 통해 파일들이 작업 디렉토리에서 스테이징 영역으로 옮겨지고, git commit 을 통해 스테이징 영역에 있던 파일들이 최종적으로 로컬 저장소로 옮겨진다.


✔️ 커밋(Commit)

  • Git 에서 가장 의미있는 변경의 단위(변경의 단위는 개발자/조직마다 모두 다르다)
  • "커밋하다" 라는 말은 즉, 변경점으르 로컬 저장소로 저장한다 라는 의미로 해석될 수 있다.

✔️ 풀(Pull), 푸시(Push)

  • 풀(Pull) : 원격 저장소에 있는 다른 개발자들의 커밋을 받아온다.
  • 푸시(Push) : 로컬저장소에서 만든 커밋을 원격 저장소로 업로드한다.

+) 잠깐! 한번 더 정리하고 넘어가자✋🏻
Git 기본 플로우
1. 원격 저장소의 소스코드를 다운로드 해서(clone),
2. 작업 디렉토리에서 작업한 내용을 스테이징 영역에 추가하면(add),
3. 의미있는 변경점들이 만들어지고, 이러한 변경점들이 모이면 최종적으로 커밋을 만들어(commit),
4. 로컬 저장소에 영구적으로 저장한다.
5. 풀(Pull)을 통해 다른 개발자들의 커밋을 받아올 수 있고,
6. 푸시(Push)를 통해 로컬 저장소의 커밋을 원격 저장소로 내보낼 수도 있다.


2️⃣ 원격 저장소 생성

Git 프로젝트 원격 저장소의 효율적인 관리를 지원하는 웹 기반의 플랫폼 서비스에는 여러가지가 있다.

지금까지는 대부분 GitHub 를 사용했지만, 이번 실습을 통해 GitLab 을 처음 접해보게 되었다.
+) 실제 기업에서는 GitLab을 훨씬 더 많이 사용한다고 한다!

GitLab 에서 프로젝트를 생성하는 과정은 GitHub 에서의 과정과 매~우 비슷했다.


3️⃣ 로컬 저장소 생성

로컬 저장소를 생성하는 과정에는 크게 2가지가 있다.

✔️ 방법 1

  • 로컬 저장소 폴더 생성
  • 로컬 저장소 초기화(git init)
  • 원격 저장소와 연결(git remote add [저장소 별칭][저장소 주소])

✔️ 방법 2

  • 로컬 저장소 폴더 생성
  • 원격 저장소 복사(git clone)

로컬 저장소를 생성하고 이를 원격 저장소와 연결하고 나면, 위 사진과 같은 결과가 나온다!

참고로 필자는 두번째 방법을 통해 대부분의 프로젝트를 진행했었다!
두가지 방법으로 모두 실습을 진행해봤는데, 실제로도 두번째 방법이 훨씬 더 편했다.


4️⃣ Git을 통한 협업

체험단 활동이 오프라인에서 진행됐다면 팀을 이뤄 실습을 진행했을텐데, 여건이 마땅치 않아 필자 혼자서 두명의 역할을 했다😅

이전 강의에서의 자세한 설명덕분에 어렵지 않게 실습에 따라갈 수 있었다!

여기서 주의해야 할 중요한 부분은 하나였다!

이와 같이 나의 로컬 저장소에 있는 커밋들을 원격 저장소로 push 하기 전에, 원격 저장소에 있는 기존의 다른 커밋들을 pull 로 받은 후, 다시 push 하는 것이 매우 중요하다!

내가 원격 저장소로 작업한 내용을 push 해야 하는데, 원격 저장소에 있는 소스코드와 현재 내 로컬 저장소에 있는 소스코드가 다르다면 충돌이 일어날 확률이 매우 크기 때문이다😮

실제로 push를 하지 않은 상태에서 pull을 하게 되면, 위와 같은 에러가 발생한다.

원만한 협업을 위해서는, 꼭! 먼저 pull 을 받아 원격 저장소와 로컬 저장소의 상태를 같게 만든 후 push 하는 습관을 들여야 한다!


자 이렇게 !
강의를 마치고 나름대로 정리를 해보았다ㅎㅎ
역시 나름대로 정리를 하니 기억에 더 오래 남을 것 같은 기분이 든다^^!

코드프레소 홈페이지(https://www.codepresso.kr/)에는 오늘 포스팅한 Git 관련 강의뿐만 아니라 다양한 강의들이 개설되어 있으니 모두 한번 씩 살펴보고 수강해보면 좋을 것 같다😃

profile
Backend Developer

0개의 댓글