저는 대학생시절 친구와 함께 창업하는 과정에서, 개발에 처음 입문하였습니다.
그때는 프로그래밍을 혼자서 공부하다보니, 어려움을 많이겪었습니다.
어디서부터 공부해야 할지 몰랐고,
어느 정도로 깊게 공부해야 할지도 몰랐습니다.
그래도 맨땅에 해딩하듯(?), 4년간은 개발에만 몰두했네요.
돌이켜보면,
의미있는 시간이기도 했지만 아쉬움도 많이 남습니다.
누군가 옆에서 공부하는 방법을 제대로 알려주었다면,
시간을 훨씬 더 효율적으로 쓸 수 있겠다는 아쉬움말입니다.
개인적인 의견으로는,
개발을 처음 시작할 때는 여러 분야를 얕게 공부하는게 중요하다고 봅니다.
한 번 경험해보는거죠.
그 이후라면 깊게 공부해야 합니다.
다시 말해, 원리를 제대로 알아야 한다는 내용입니다.
원리를 모르면, 다양한 사례에 대응하기 힘들기 때문이에요.
하지만 원리는 어려워요.
원리를 공부한다고 생각하면 시작부터 부담스럽습니다.
그러나 저와 함께라면 그런 걱정은 하지 않으셔도 됩니다.
과거의 저에게 알려준다는 마음으로 강의를 준비했습니다.
모든 원리를 그림으로 쉽게 표현했고.
빠른 시간 안에 제대로 배우실 수 있도록 수업을 만들었습니다.
여러분의 시간이 소중한 만큼, 강의 하나 하나에 정성을 다했습니다.
강의 자료의 그림이 이해하기 쉬운가.
원리를 설명하는 그림이 모든 사례를 대변하는가.
이 내용이 더 나은 개발자로 성장하는데 꼭 필요한 내용인가를 고민하며,
엑기스를 짜내듯 강의를 만들었습니다.
여러분의 성장을 응원하며,
저의 작은 손길 하나가 여러분께 도움이 되었으면 합니다.
감사합니다.
강의
수강평
- Git & GitHub, 원리부터 차근차근 - 근본깃 [완성편]
- Git & GitHub, 원리부터 차근차근 - 근본깃 [완성편]
- Git & GitHub, 원리부터 차근차근 - 근본깃 [기초편]
게시글
질문&답변
git checkout -t 문의
안녕하세요, 아리마님 😀 오.. 정말 예리하시군요!!!git checkout -t origin/develop에는 1. origin/develop과 똑같은 범위의 develop브랜치를 생성하고.2. HEAD가 (방금 만든) develop 브랜치를 가리키게 만들며.3. develop브랜치와 origin/develop 브랜치를 업스트림으로 연결한다...는 의미가 닮겨있어요!사실, git checkout develop 명령어만 실행해도 git이 (알잘딱깔센 으로..?ㅎㅎ) 위 작업을 모두 실행합니다.제가 git checkout -t origin/develop로 설명드린 이유는, 이 명령어가 조금 더 명시적으로 의미를 드러내기 때문이었어요! 😊
- 0
- 1
- 14
질문&답변
다른 폴더의 커밋내역도 함께 뜹니다.
안녕하세요, sun 😆 문제는 해결되었을까요?? 추가적으로 궁금하신 부분이나 헷갈리는 점이 있다면, 무엇이든 자유롭게 질문해주세요! 감사합니다 :)
- 0
- 3
- 46
질문&답변
stage area 는 로컬만의 기능인가?
안녕하세요, 태훈님 😀궁금하신 점은 해결되었을까요? 추가적으로 궁금하신 부분이 있다면, 편하게 질문해주세요!
- 0
- 3
- 36
질문&답변
다른 폴더의 커밋내역도 함께 뜹니다.
안녕하세요, sun 😃정확한 원인을 말씀드리기 어렵지만,보여주신 그림과 강의 진도를 보고 '추측'해서 말씀드려요!제 생각으로는..'.git' 폴더의 위치가 /Desktop/project 인거 같아요.그러니까, sun의 폴더 구조는 아래와 같다는 내용입니다./Desktop/Desktop/project/Desktop/project/.git/Desktop/project/branch01/Desktop/project/branch01/rectangle/Desktop/project/project_diff_commit/Desktop/project/project_diff_commit/rectangle정리하자면, branch01과 project_diff_commit은 별개의 깃 프로젝트가 아니고.project라는 하나의 깃 프로젝트에 포함된 폴더로 간주된 상황인 듯 해요.그러면 위와 같은 문제가 발생할 수 있거든요 ㅎㅎ우선, ls-al 명령어로 '.git'폴더의 위치를 확인해주실 수 있나요?같이 이 문제를 해결해봅시다!
- 0
- 3
- 46
질문&답변
staging area 질문있습니다.
오.. 정확하게 이해하고 계십니다.깃헙에 코드를 푸시할 땐, 실제로는 (효율성을 위해) 변경된 사항만이 업로드 됩니다.위 그림은 깃을 쉽게 이해하기 위한 것으로, 실제 내부 작동 원리와는 조금 차이가 있어요.
- 0
- 2
- 39
질문&답변
stage area 는 로컬만의 기능인가?
안녕하세요, 태훈님 😀 1. github에는 staging area가 존재하지 않습니다.github은 "세 저장소 중 repository만을 보관하고 있는 클라우드"라고 이해하시면 됩니다 ㅎㅎ2. git init을 하게되면, 우리의 폴더에는 '.git' 이라는 숨겨진 폴더가 생성되는데요. 찾으시려는 정보는 모두 .git 폴더 내부에 저장됩니다. 2-1. 커밋 (Commit)저장 위치: .git/objects/ 디렉토리.저장 방식:커밋은 객체(Object)로 저장되며, SHA-1 해시 값을 기반으로 이름이 정해진 파일에 저장됩니다.객체는 압축(zlib) 형식으로 저장되며, 커밋 메시지, 부모 커밋의 해시, 작성자 정보, 트리(Tree) 객체 해시 등이 포함됩니다.예를 들어, 커밋 해시가 a1b2c3...라면, 파일은 .git/objects/a1/b2c3...에 저장됩니다.2-2. 블랍(blob)저장 위치: .git/objects/ 디렉토리.저장 방식:블랍 객체는 파일의 콘텐츠 자체를 저장합니다. 파일 이름이나 메타데이터는 저장되지 않고, 오직 파일의 내용만 포함됩니다.파일의 내용이 동일하다면 동일한 블랍 해시를 공유합니다.블랍 객체의 해시는 파일 내용의 SHA-1 해시 값으로 결정되며, .git/objects/xx/yyyy... 형식으로 저장됩니다.2-3. 트리 (Tree)저장 위치: .git/objects/ 디렉토리.저장 방식:트리 객체는 디렉토리 구조를 나타냅니다. 트리에는 해당 디렉토리의 블랍과 하위 트리 객체의 해시 값, 파일 이름, 모드 정보(예: 실행 권한)가 저장됩니다.트리 객체는 SHA-1 해시 값으로 식별되며, .git/objects/xx/yyyy...에 저장됩니다.2-4. 브랜치 (branch)저장 위치: .git/refs/heads/ 디렉토리.저장 방식:각 브랜치의 이름에 해당하는 파일이 있고, 파일 안에는 브랜치의 최신 커밋 해시가 저장됩니다.예: main 브랜치의 파일은 .git/refs/heads/main이며, 내용은 해당 브랜치의 최신 커밋 해시입니다. 2-5. HEAD저장 위치: .git/HEAD 파일.저장 방식:현재 체크아웃된 브랜치를 가리키며, ref: refs/heads/ 형식으로 저장됩니다.특정 커밋을 체크아웃한 경우(분리된 HEAD 상태)에는 커밋 해시가 직접 저장됩니다.git의 내부 구조나 원리를 더 깊게 이해하고 싶으시다면, 아래 링크를 참고해주세요!https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EB%82%B4%EB%B6%80-Git-%EA%B0%9C%EC%B2%B4
- 0
- 3
- 36
질문&답변
브랜치 실제 모양 #HEAD 7분 30초 쯤
음... 아닙니다 ㅎㅎ브랜치는 커밋을 가리킬 수 있구요.HEAD는 브랜치 또는 커밋을 가리킬 수 있어요.그래서, HEAD가 main 브랜치를 가리키고, main 브랜치는 커밋을 가리키는 구조가 가능한 것이지요.(HEAD -> main 브랜치 -> 커밋)그리고 지금의 상황은 'HEAD가 커밋을 간접적으로 가리키고 있다'고 표현합니다.HEAD가 커밋을 직접 가리키게 만들어볼 수 있는데요. (HEAD -> 커밋)이때의 HEAD를 '분리된 HEAD'라고 부릅니다.따라서, HEAD와 Main브랜치가 가리키는 커밋이 달라졌다는 점은 '분리된 HEAD'가 생긴 이유로 볼 수는 없어요. 물론, 분리된 HEAD일 때, 브랜치와 HEAD가 가리키는 커밋은 달라지게 되는데요. 이 점이 분리된 HEAD가 발생한 이유로 볼 수 없다는 내용입니다. 분리된 HEAD는 단순히 HEAD가 커밋 자체를 가리키고 있다는 뜻으로 봐주세요!
- 0
- 2
- 49
질문&답변
git diff후 차이 내역을 보는데 저는 내용에 -(마이너스)가 붙어 나옵니다.
혹시, 파일을 생성하거나 수정하는 에디터(ex. vi, vim, vs code 등등)로 어떤 도구를 사용하셨나요??그림을 보니, 줄바꿈 기호가 없다고 나와서요!
- 0
- 2
- 44
질문&답변
git init을 치고 나서 hint라는게 나오는데 무슨 의미인지 잘 이해가 안됩니다.
안녕하세요 😀 우선, 브랜치란 '독립적으로 작업할 수 있는 공간' 이라고 봐주세요.(참고로,섹션 6에서 자세히 배울 수 있어요.)이때, 힌트의 내용은요.기본적으로 생성된 브랜치 이름을 master에서 다른 이름으로 바꾸라는 내용이에요.master는 기능상 문제는 없어요. 하지만, '노예 주인' 이라는 안좋은 의미를 가지고 있습니다.해결 방법은 아래와 같아요.git config --global init.defaultBranch main 을 실행해서 기본적으로 생성되는 브랜치 이름을 main으로 설정하시면 됩니다!
- 0
- 1
- 54