한화시스템 BEYOND SW캠프 - 2일차

Seung min·2025년 7월 16일

수업 내용

2025년 7월 16일

Git이란?

분산 버전 관리 시스템으로 소프트웨어 개발에서 소스 코드의 변경 사항을 추적하고 여러 사용자 간의 작업을 조율하는데 사용된다.

Git의 장점

  • 소스 코드의 버전을 관리가 쉽다.
  • 협업에 용이하다.
  • 개발의 단계를 브랜치를 통해 상세히 나눌 수 있다.

Git의 소스 코드 상태

  • Project Source Code: 내 컴퓨터 안에 소스코드가 있는 곳, workspace에 해당하는 디렉토리(폴더)
  • Staging Area (Index Area): git add 명령어로 소스코드를 담아 놓는 임시 공간. 커밋 하나에 포함할 변경 사항
  • Local Repo: .git directory, git commit(커밋)명령어로 소스코드를 개발중인 컴퓨터에 마련하는 지역 저장소
  • Remote Repo: GitHub, 작업 중인 컴퓨터가 아닌 외부 클라우드 혹은 외부 저장지에 저장하는 원격 저장소 혹은 공유 저장소

Git 명령어

  • add: 변경된 프로젝트 소스 코드 또는 파일을 staging area에 옮기는 명령어
  • commit: Staging Area에 있던 변경된 소스 코드를 Local Repo로 옮기는 명령어
  • push: Local Repo에 있는 변경된 소스 코드를 Remote Repo로 저장하는 명령어
  • fetch: Remote Repo로부터 필요한 파일을 Local Repo로 받는 명령어
  • merge: Local Repo에 있는 소스코드의 수정 사항을 프로젝트에 직접 합치는 명령어
  • pull: fetch와 merge를 한번에 처리할 때 사용하는 명령어

Git의 사용

  • commit → pull → push //일반적인 상황
  • commit → fetch → 수동 merge → commit → push(2 개의 commit을 push) // 충돌 상황(풀 또는 푸쉬가 안되는 상황)
  • pull → 개발 → commit → push //개발 안하고 쉬고 있을 때
  • 개발 → commit → pull → push //개발 열심히 할 때

Git GUI 환경(sourceTree)에서 충돌 상황 대처

(push중에 충돌 상황)

다른 사람이 먼저 원격 저장소의 메인 브랜치에 나와 같은 부분의 소스 파일을 수정하여 push함.

대처 방법

  • 패치를 클릭하여 메인 브랜치의 소스코드를 가져온다.(메인 브랜치는 master)

  • 병합을 클릭 후, 확인을 누른다.

  • 확인을 누르면 이와 같은 경고가 나오고 닫기를 누른다.

  • 병합된 파일에서 수동으로 소스 코드를 수정한다.

  • 수정 결과

  • 아래의 수정된 test2.txt를 스테이지 영역에 올리고 커밋을 진행한다.

  • 마지막으로 다시 push를 진행해준다.

(pull 중에 충돌 상황)

다른 사람이 수정한 줄 모르고 소스코드를 수정한 후에 pull을 수행하여 내가 수정한 코드와 원격 저장소에 있는 코드가 겹친 상황

대처 방법

  • 패치를 누른다.

  • 병합을 누른다.

  • 원격 저장소의 병합하기를 원하는 브랜치가 있는 곳을 클릭한다.(원격 저장소의 master 브랜치와 병합하려한다.)

  • 수정 결과는 이와 같다. 그 후에는 push 때와 같이 수정된 소스코드를 스테이징 영역으로 옮기고 커밋을 수행한다. 그리고 push를 수행한다.

GitHub란?

웹 기반의 호스팅 서비스, Git 버전 관리 시스템을 사용하는 원격 저장소이다.

GitHub의 장점

  • 안전하고 신뢰성있는 저장소이다.
  • 분산/버전 관리 시스템(형상 관리)
  • 여러 협업 기능(pull request, Issues, Branch 등)을 가지고 있다.
  • 코드 배포 자동화가 가능하다.
  • 강력한 보안 기능을 가지고 있다.

Projects

깃허브에서 Projects는 프로젝트의 관리, 작업 현황, 진행도를 확인할 수 있는 기능이다.

  • 생성 방법

    • new project를 클릭한다.

    • 템플릿을 생성하고 프로젝트명을 설정한다.

    • 프로젝트의 Todo, In Progress, Done이 생성되었다

Milestones

프로젝트가 도달해야 하는 목표 기한, 시간, 지점을 설정하는 기능이다.

  • 생성 방법

    • new issue를 클릭한다.

    • 이슈 타이틀과 설명을 적는다. - [ ]를 추가하면 체크박스를 설명란에 추가할 수 있다.

    • Assignees(이슈를 담당하는 사람), Label(이슈 특이사항), Projects(이슈가 속한 프로젝트), Milestone(이슈 진척도 및 기간)을 지정한다.

    • Create 버튼을 눌러 생성한다. Close issue는 이슈가 완료되기 전까지는 누르지 않는다.

PR(pull request)

레포지토리의 메인 브랜치가 아닌 서브 브랜치에서 푸쉬가 올라오고 메인 브랜치에 병합했으면 한다는 요청을 보내는 기능이다.

  • 생성 방법

    • Compare & pull request를 누르거나 New 버튼을 눌러 생성한다.

    • New버튼을 눌렀을 때, 브랜치를 지정한다.

    • Create pull request 를 눌러준다.

    • 타이틀과 설명, Reviewers(평가자), Assignees(이슈를 담당하는 사람), Label(이슈 특이사항), Projects(이슈가 속한 프로젝트), Milestone(이슈 진척도 및 기간)을 지정한다.

    • Merge pull request 버튼을 클릭하면 메인 브랜치에 합병된다. 하지만 그전에 팀원들의 리뷰를 통한 허락을 받아야 한다.

    • 서브 브랜치가 메인 브랜치에 합병하기 전에 다른 팀원이 메인 브랜치에 내가 수정한 부분을 먼저 메인 브랜치에 합병했을 때, 에러가 생길 수 있다.

새롭게 배운 점

오늘 수업은 개발자들의 필수 툴인 Git과 GitHub에 대해 배웠다.

오늘 수업을 통해 Git을 sourceTree를 사용한 GUI환경에서 다루었다.
Git을 이 때까지 CLI로만 다루어본 나로써는 너무 생소한 툴이었다.
fetch, merge, pull과 같은 협업을 하면서 많이 다룰 수 있는 기능도 이번 기회에 숙달시키기 위해 많이 사용해 볼 수 있었다.
또한 GitHub도 평소에는 소스 코드를 저장하기 위한 용도로만 사용했었는데, Projects, Issue, Milestone, Pull Request 등에 대해 배울 수 있었다.

부족한 점

학교 다닐 때 Git을 많이 사용하지 않았던 것이 오늘 수업을 거치면서 많이 후회되었다. 실제로 git에 대해 깊게 배우니 너무 어려웠고 복잡했다.
반복적인 연습으로 git을 숙달시켜야 겠다고 생각하였다.

앞으로의 계획 혹은 다짐

  1. git 숙달시키기
  2. 노션에 적는 학습 기록을 좀 더 보기 좋게 다듬기
  3. 꾸준한 코딩테스트 공부
profile
Seung min의 개발 공부 노트

0개의 댓글