-
[데브캠프 : 김민태의 프론트엔드 개발 3기] Git/GitHub 학습스터디/[패스트캠퍼스] 데브캠프: 김민태의 프론트엔드 개발 3기 2024. 12. 20. 14:49
Git이란?
Git 깃은 '형상 관리 도구'!
Git은 소프트웨어 개발에서 필수적인 형상 관리 도구(VCS, Version Control System)이다. 코드를 포함한 프로젝트의 파일과 디렉토리 상태를 추적하고 관리할 수 있으며, 변경 이력을 남겨 과거 버전으로 복원이 가능하다.버전 컨트롤 시스템의 필요성
소프트웨어는 계속해서 변하며, 모든 변경사항을 기록하고 복구 가능하도록 관리하는 것이 중요하다. 다수의 인원이 방대한 양의 파일을 관리하는 환경에서 Git은 "누가, 왜, 무엇을" 수정했는지 기록하며, 협업 과정에서 충돌 문제도 해결할 수 있다.개발자의 시각: 하드웨어와 운영체제
윈도우와 UNIX 계열 운영체제로 크게 나뉜다. 프론트엔드 개발자가 알아야 할 운영체제와 파일 시스템
프론트엔드 개발자라면 하드웨어와 OS의 작동 방식을 이해해야 한다."브라우저 상에서 돌아가는 코드만 적는 거 아닌가요?"
라는 질문을 할 수 있으나
브라우저는 다양한 하드웨어와 소프트웨어의 상호작용을 통해 작동한다. 프론트엔드 개발자는 메모리, CPU, GPU와 같은 자원이 어떻게 사용되는지를 이해해야 성능을 최적화할 수 있다. 예를 들어, 렌더링 과정에서의 성능 문제를 해결하려면 DOM과 CSSOM의 구조를 알아야 한다.
또한, 파일 시스템에 대한 이해는 데이터 저장과 관리에 중요하다. 로컬 스토리지와 세션 스토리지의 차이를 알고 있어야 최적의 방법을 선택할 수 있다.
결론적으로, 프론트엔드 개발자는 브라우저 내의 코드 작성뿐만 아니라 하드웨어와 운영체제의 작동 원리를 이해함으로써 더 나은 사용자 경험을 제공할 수 있어야 한다. 이는 기술적 문제를 해결하고, 개발자로서의 경쟁력을 높이는 데 도움이 된다.이번 학습 과정에서는 파일시스템과 디렉터리 구조에 대해 이해하는 시간을 가졌다. OS 마다 파일 시스템이 다르지만, 디렉토리와 파일 구조라는 공통된 개념이 존재한다. 이를 숙지하면 코드 작성 및 프로젝트 관리에서 효율성을 높일 수 있다.
Git의 핵심 기능
Git이 필요한 이유
Git은 소프트웨어의 상태를 시간순으로 기록하고 복원하며, 여러 작업 상태를 병렬로 관리할 수 있다. 이는 복잡한 프로젝트에서 필수적인 기능이다.소프트웨어 변경 관리와 기록의 중요성
TypeScript의 커밋 로그 커밋 내역과 브랜치 그래프
Git은 변경사항을 추적하며, 소프트웨어가 어떤 방향으로 발전했는지 기록한다. 이런 기록은 협업 중 문제가 발생했을 때 큰 도움을 준다.Git의 주요 사용법
CLI(Command Line Interface)와 GUI의 차이점
Git은 CLI 기반으로 더 강력한 기능을 제공하며, 설치 후 git init 명령으로 저장소를 초기화한다. GUI 도구를 사용할 수 있지만, CLI에 익숙해지면 더 효율적이다.Git 설치와 초기 설정
Git
git-scm.com
Git은 다양한 플랫폼에서 설치 가능하며, 설치 후에는 기본 설정(git config)으로 사용자 정보를 입력하고 준비할 수 있다.
Git의 기본 워크플로우
깃허브로 repository를 생성시 초기 설정에 대한 안내가 제시된다 저장소 초기화 (git init)
git init 명령은 프로젝트 디렉토리를 Git이 추적하는 저장소로 변환하며, .git 디렉토리가 생성된다.변경 사항 추적 (git add, git status)
git add 명령은 수정된 파일을 스테이지 영역에 추가하고, git status로 현재 작업 상태를 확인한다.커밋과 히스토리 관리 (git commit, git log)
git commit은 변경사항을 저장소에 기록하며, git log로 이전 커밋 내역을 확인할 수 있다.브랜치 생성 및 관리 (git branch, git checkout, git switch)
브랜치는 상태를 독립적으로 관리하며, git branch로 생성하고, git checkout 또는 git switch로 이동할 수 있다.
(git checkout -b <BRANCH_NAME> 옵션을 통해 새 브랜치 생성과 이동을 한번에 수행 가능하다. )협업과 원격 저장소
리모트 저장소 활용 (git clone, git pull, git push)
git clone으로 원격 저장소를 로컬에 복사하고, git pull로 최신 변경사항을 가져오며, git push로 로컬 변경사항을 업로드한다.병합(Merge)과 충돌(Conflict) 해결
병합 중 충돌이 발생하면 Git은 충돌 파일을 표시한다. 사용자는 수정 후 이를 저장하고 병합 커밋으로 기록할 수 있다.리베이스(Rebase)와 병합 기록 관리
git rebase 명령은 브랜치를 평탄화하여 커밋 히스토리를 깔끔하게 정리하는 데 유용하다. 대표적으로 커밋 히스토리상에 머지한 기록이 남지 않는 것을 원한다면 리베이스를 쓸 수 밖에없다.리베이스에 대한 이해는 아직 부족한 듯 하다. 제대로 된 학습을 위해 다른 글에서 따로 다뤄볼 계획이다.
GitHub 활용
깃의 리모트 저장소를 빠르고 쉽게 생성하고 공유할 수 있는 다양한 서비스가 운영중이다. 그중 가장 대중적인 서비스가 깃허브(GitHub)이며, 앞으로의 프로젝트에서도 깃허브를 활용할 계획이다.
GitHub 협업을 위한 이슈 및 Pull Request
GitHub는 이슈 관리와 Pull Request 기능을 통해 협업을 체계적으로 지원한다.GitHub에서 팀 프로젝트 관리 방법
마크다운을 활용한 문서화와 PR 템플릿으로 프로젝트 관리 효율성을 높일 수 있다.실전 팁과 도구
CLI 익숙해지기: GUI 대신 명령어 중심의 작업 추천
CLI 환경에서 작업하면 Git의 강력한 기능을 최대한 활용할 수 있다.깃 브랜치 전략 활용하기
브랜치 관리 전략을 수립하고 활용가능하다. 개발 과정에서 협업 효율성을 높인다.
Git Flow 의 파생버전으로 다양한 전략들이 만들어진다. ex) GitHub Flow
팀 프로젝트에서 브랜치 네이밍과 이슈 템플릿 정하기
"브랜치 네이밍 작성에는 무언가 규칙이 있는가?"
라는 질문이 생길 수 있다.
답은 없다. 마음대로 하면 된다.
정확히는 프로젝트 내 협업을 진행하는 개발자들과 정하는게 좋다.
약속을 통해 정한 명확한 브랜치 네이밍과 이슈 템플릿은 팀 내 커뮤니케이션을 원활하게 한다.
.gitignore 파일의 활용
.gitignore 파일은 Git이 특정 파일을 추적하지 않도록 설정한다. 이를 통해 불필요한 파일의 기록을 방지할 수 있다.gitignore.io 를 활용해서 각 프로젝트에 맞는 깃 이그노어를 활용할 수 있다.
마크다운(Markdown) 활용하기
마크다운은 문서화와 시각화를 위한 필수 도구이다. 소프트웨어 개발에 필요한 문서 중 상당수가 마크다운 문법으로 작성되어있다. README, PR 등 깃허브에서도 마크다운 포멧을 적극 활용중이다.mermaid.js.org Mermaid로 다이어그램을 작성할 수도 있다.
Git 학습의 방향
Git 원리 이해의 중요성
Git의 내부 작동 방식을 이해하면 문제 해결 능력을 높일 수 있다.온보딩 프로젝트에서 Git 사용법 익히기
실습을 통해 Git의 다양한 기능을 익히는 것이 중요하다. 다음 주 진행하게 될 온보딩 프로젝트에서 깃의 기능들을 적극적으로 활용해 볼 계획이다.추가 학습 자료 추천
Git 공식 문서와 온라인 학습 자료를 통해 꾸준히 학습하는 것을 추천한다.마무리하며
Git과 GitHub는 현대 소프트웨어 개발에서 필수적인 도구이다. 이를 제대로 익히고 활용하면 협업 효율성과 코드 관리 능력을 크게 강화할 수 있다.
'스터디 > [패스트캠퍼스] 데브캠프: 김민태의 프론트엔드 개발 3기' 카테고리의 다른 글
JavaScript에서 DOM과 이벤트 (5) 2025.01.17 [데브캠프 : 김민태의 프론트엔드 개발 3기] 기초학습(4) : JS (4) 2025.01.10 [데브캠프 : 김민태의 프론트엔드 개발 3기] 기초학습(2) : HTML (4) 2025.01.03 [데브캠프 : 김민태의 프론트엔드 개발 3기] 기초학습(1) : 개요 및 세팅 (5) 2024.12.27 [데브캠프 : 김민태의 프론트엔드 개발 3기] OT 후기 (2) 2024.12.16