인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

직접 만들면서 배우는 Git Internals

버전 관리 도구의 사실상 표준인 Git 동작을 깊게 학습하고 직접 만들어보세요!

초급자를 위해 준비한
[개발 도구, Git] 강의입니다.

이런 걸 배울 수 있어요

  • Git 내부 동작

  • 시스템 프로그래밍

직접 만들며 배우는 Git Internals 📖

Build From Scratch ! Build Your Own Git !

git checkoutgit commit 명령어를 Git에 입력하면 Git 내부에 어떤 동작을 하는지 설명할 수 있나요? 이 강의는 Git의 주요한 동작들이 내부적으로 어떤 알고리즘을 어떻게 파일 시스템에서 수행하고 있는지 학습하고, 자신에게 익숙한 언어로 Git을 따라한 "Tig"를 만들어보는 강의입니다.


수강 타겟/강의 목적 🙆‍♀️

지식공유자가 생각하는 수강생 유형

  • 자주 사용하는 기술의 Under the hood를 탐구하고 싶은 사람
  • 공학적으로 깊은 탐구 경험을 원하는 사람
  • Git의 동작 원리를 보다 정확히 이해하고싶은 사람

수강생의 고민 & 해결 방법

  • 🥲 면접에서 요구하는 기술에 대한 깊은 탐구는 어떻게 하는 걸까?
  • 🧐 Git을 쓰기만 했지, 어떻게 동작하는지 궁금한 걸?
  • 🤨 시스템 프로그래밍 프로젝트로 적절한 게 없을까?

강의를 들은 후 수강생의 변화

  • 아주 유명한 도구의 깊은 공학적 원리를 탐구한 경험이 있는 개발자
  • 자주 사용하는 언어로 시스템 프로그래밍 프로젝트를 진행한 개발자
  • Git의 동작을 정확히 알고 사용할 수 있는 개발자

강의 특징 ✨

  • 강의는 Git의 내부 동작을 구현하는 실습을 진행합니다.
  • 강의 실습은 Go 언어로 진행되지만 모든 언어에서 쉽게 대체되는 문법만 사용합니다.
  • 사용되는 Go 문법에 대한 설명도 포함되어 있습니다.
  • 시스템 프로그래밍 학습 및 유의미한 시스템 프로그래밍 실습을 진행해볼 수 있습니다.

학습 내용 📚

  • Intro: 강의를 듣기 편하도록 기본적인 Go에 대한 설명, 시스템 프로그래밍을 위한 함수에 대해 간단히 설명하고, 수업 개요를 담고 있어요.
  • Git Internals: Git의 내부 컴포넌트를 하나씩 개발해보고 구체적인 동작을 공부해요.
  • Git Overview: Git의 핵심 동작인 버전관리와 브랜칭, 리모트의 동작들이 구체적으로 어떤 단계를 따라서, 어떤 내부 컴포넌트를 사용하며 동작할지 탐구해요.

예상 질문 Q&A 💬

Q. 강의는 Go 언어로 진행한다는데, Go를 알아야 하나요?
A. 강의에서 다른 언어와 매칭되는 기본적인 제어와 반복 구문, 할당, 자료형 등을 설명합니다. Go는 문법이 아주 단순한 언어입니다. 시스템 프로그래밍을 위한 패키지도 굉장히 직관적이구요. 따라서 각자의 언어로 강의를 따라오기에 문제가 없을 거에요.

Q. 시스템 프로그래밍을 할 줄 알아야 하나요?
A. 강의에서 기본적인 시스템 프로그래밍을 가르쳐 드립니다. 강의 실습으로 사용하는 시스템 프로그래밍은 복잡하지 않아요. 파일을 만들고, 파일에 쓰고, 파일을 읽는 기본적인 시스템 프로그래밍입니다. 하지만 각자 실습 언어로 이를 어떻게 하는지는 찾아보셔야 합니다.

Q. Git 명령어 강의가 포함되어 있나요?
A. 강의 중 Git 명령어를 설명하긴 하지만 Git을 처음 보는 사람에게 설명하는 정도로 자세히 하지는 않습니다. 이 강의를 수강하려면 Git사용 경험이 필요합니다.


수강 전 참고 사항 📢

학습 자료

  • 이론 학습을 위한 강의 자료 PDF
  • 결과 코드를 확인할 수 있는 Github Repository

선수 지식 및 유의사항

  • 자신있는 언어로 500자 이상의 프로그램을 작성할 수 있는 능력

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • Git의 내부 동작이 궁금한 사람

  • Deep Dive를 통해 매력적인 개발자가 되고 싶은 사람

  • 세계적인 오픈 소스 하나를 깊게 공부해보고 싶은 사람

선수 지식,
필요할까요?

  • 자신있는 프로그래밍 언어 하나

안녕하세요
Jayce입니다.

362

수강생

12

수강평

3

답변

4.8

강의 평점

2

강의

안녕하세요. 저는 Jayce입니다. 현재 유니콘 스타트업의 플랫폼 엔지니어로 일하고 있습니다.

저는 창업도 하고 대규모 서비스를 위한 개발도 하고 개발자를 위한 플랫폼을 만들기도 하면서 짧은 시간 동안 서비스 개발자라고 불리는 역할도 수행해보고 플랫폼 엔지니어라고 불리는 역할도 수행했습니다. 그 과정에서 "잘하는 Software Engineer는 어떤 특징이 있고 어떻게 해야 그런 사람이 될 수 있구나"를 나름대로 정립할 수 있었습니다.

저는 짧게 말해서 Deep Dive 하는 사람들을 함께 일하는 엔지니어로서 매력적이라고 느낍니다. 단순히 주어진 일을 기계처럼 쳐내는 사람은 어떤 상황에 대한 최선의 선택을 내리기까지 비교적 오랜 시간이 걸리는 것 같아요. 반면 왜 이런 결정을 해야하는지 기술 내면의 공학적인 이유를 파고들며 이해하는 사람들은 금방 다른 의사 결정에서도 공학적으로 설득력 강한 주장을 할 수 있는 사람이 됩니다.

제가 만드는 강의는 새로운 기술을 얕게 익히는 것을 목표로 하지 않습니다. 저는 주니어 개발자들이 훌륭한 팀 동료, 매력적인 개발자, 단단한 기술자가 될 수 있는 방법을 알려주고 싶습니다. 더욱 매력있는 엔지니어가 되기 위해 조금 더 깊은 내용을 공부해보고 싶은 사람들에게 적합한 강의를 제 최선의 노력으로 만들어보겠습니다. 🙂

더보기

수강평

전체

1개

4.0

1개의 수강평

  • devgmonk6353님의 프로필 이미지
    devgmonk6353

    수강평 1

    평균 평점 4.0

    수정됨

    4

    100% 수강 후 작성

    9〜10講くらいまで受講しました。 9講の後半が途中で切れています。講義中に話が終わっていないのに、映像が止まります。 10講は前半が切れていると見ましたが、9講の内容の後半から始まっていました。一部編集されており、9講の最後の部分と一致する部分がないため、9講の終わりからすぐに始めるのは難しいです。 コード説明時、Go固有の文法やGoのテストフレームワークを使用していますが、該当文法やフレームワーク関数についての説明がありません。 講義紹介および講義序盤の説明では、他の言語の使用者も簡単に学べるとありますが、そうではないようです。(検索してみたところ、Pythonが似た文法を使うとのことです) 6講では実際の実行を見せなかったため、元々このように講義が終わるのかと思いましたが、9講と10講を見ると、もしかすると6講も実際にテスト実行した部分が切れているのではないかと思いました。 ---------------------------------------------------------- 以前の1点から修正しました。 迅速なフィードバックと修正が良かったです。 完講後の評価ですが、各機能のテストコード作成、機能実装の順で講義が進む点が残念でした。 テストコードを作成する映像の時間が実際の実装より長いのですが、この講義の核心はタイトルのように直接Gitの内部機能を実装することであるため、テストコードは事前に作成したものを機能実装講義の前か後に「この機能にはこのようなテストケースが必要です」と見せる方が、講義のテーマにより集中できると思います。実装の方がむしろ短いため、テストケースを作成する勉強をしている感じの方が強かったです。 講義はGitをこれから始める方や、少し知っているレベルであれば、もう少し勉強した後に聞くことをお勧めします。内部動作の基礎から教えてくれますが、適切な知識があった方が理解がより楽になると思います。 お疲れ様でした。

    • byjayce
      지식공유자

      こんにちは。ご不便をおかけしているとのこと、申し訳なく思います。言い訳がましくなってしまい、申し訳ございません。 1. Goの文法はレッスンの冒頭で簡単に説明しておりますが、おっしゃる通りフレームワークについて説明はしておりません。理由は、テストという方式は実はGoにおいて特別な方式ではないためです。むしろGoで特殊な方式のテスト方法より、一般的に知られているBDDフレームワークを使って作成いたしました。それでも、私の書いたコードに慣れていなかった可能性もあるかと思います。 2. 途中で途切れている部分があるとのこと、大変申し訳ございません。どうなっているのかと思います。過去にアップロードした時と少し変わっているように見えます。修正してプラットフォームに問い合わせてみます。

    • byjayce
      지식공유자

      確認してみました 승녕님。6講の後半部分はなぜか実装部分が消えていました。私がアップロードした形跡はあるのですが、講義からなくなっていて少し腑に落ちません。現在、再度アップロードしました。 9講と10講(現在の10、11講)は仰る通り急に終了していますが、10講の冒頭部分と9講の後半部分が繋がる講義で間違いありません。テストを先に作成し、具体的な実装を作成する部分を分けて作った箇所です。 いずれにせよ、不注意によりご迷惑をおかけして申し訳ありません。

비슷한 강의

같은 분야의 다른 강의를 만나보세요!

₩99,000