Skip to content
On this page

2020-07-01

Title
2020-07-01
Category
2020
Tags
Aliases
2020-07-01
Created
4 years ago
Updated
last year

'우아한테크캠프 1일차'

나의 각오/계획

  1. 우아한테크캠프 끝나고 함께 프로젝트할 사람들 만나기

  2. 다른 사람 의견 잘 듣기

  3. 내가 아는 것은 친절히 알려주기

  4. 모르는 것은 잘 질문하기

  5. 배운 것은 개인적으로 써먹어 보기

  6. 오늘 배운 내용은 오늘 복습하기

Git / GitHub

Git에 관하여

Git은 리누스 토발즈(Linus Torvalds)가 리눅스(Linux) 커널을 관리하기 위해서 만든소스관리 툴이다. (ㄷㄷ) Git 이전의 형상관리 툴은 SVN, CVS 등이 있었음.

간단한 소규모 프로젝트에 Git을 사용하는 것은 난이도를 높이지만, 복잡한 대규모프로젝트에서는 프로젝트의 난이도를 상당히 낮출 수 있기 때문에 필수적이다.

안티 패턴

  • git add . : 변경사항이 있는 모든 파일을 한번에 스테이징 하지 말아라. 한 파일한 파일 씩 변경사항을 확인하면서 커밋해라.

  • git commit -m "" : 커밋은 git commit 으로 제목과 함께 간단한 설명까지 덧붙여서 작성하는 것이 정석이다.

이러한 안티 패턴이 만연해 있음. 좋은 커밋 습관을 기르는 것이 중요하다.

Git flow

Git-flow, GitHub flow, GitLab flow 각각이 다른 형상 관리 전략이다. 이 외에도 수많은 flow 들이 존재. 하지만 Git-flow 라는 이름 때문에 Git flow가 정석, 표준이라는 오해를 하기 쉽다. 하지만 Git flow가 복잡하고 어렵기 때문에 이를 사용하는 것이바람직하지 않은 조직, 팀이 있을 수 있다. Git flow 외에도 훌륭한 flow 전략들이 많기 때문에 Git flow에 대해 공부하는 것은 좋지만 무조건 GIt flow를 적용하는 것이표준인 것은 아니다.

Understanding the GitHub flow

우린 Git-flow를 사용하고 있어요 - 우아한형제들 기술 블로그

하루에 1000번 배포하는 조직 되기 | 뱅크샐러드

커밋 메시지에 대해

  • 메시지는 한글도 가능하다.

    커밋 메시지는 팀원 뿐만 아니라 미래의 나를 위해 남기는 것이다. 적당한 단어를찾지 못한 어색한 커밋 메시지를 남기는 것보다 한글로 명확하게 작성하는 것이 훨씬낫다.

    우리 프로젝트는 오픈 소스가 아니니까

    하이브리드로 커밋 메시지 제목을 영어로 남기고 설명을 한글로 작성하는 방법도 있다.

    실제로 TDD를 잘하는 팀에선 테스트 코드의 메소드 명을 한글로 하는 경우가 있다. 훨씬 명확한 메소드 명으로 인해 좋은 효과가 있다.

  • fork 후 PR과 branch 후 PR의 차이

    기본적으로 fork는 내가 이 저장소에 권한이 없을 때 하는 것이다. 오픈 소스에 기여하는 경우 등등..

Git 명령어와 동작 원리

Git 동작 원리를 제대로 배운 것은 처음이었고 기존 알고 있던 개념이 잘못되었다는것을 깨닫고 개인적으로 충격을 받았다.

Learn Git Branching

  • git init : 숨겨진 폴더가 하나 생김

    • .git : 로컬 저장소

      • git의 저장 단위는 커밋

        • Working directory → Stage → Commit
    • GitHub or GitLab ... - 원격 저장소

    • git reset → 날아가지 않음.

    • 워킹 디렉토리의 변경사항에 대한 스냅샷

    • 커밋은 내부적으로 트리로 구성되어 있음 트리에 오브젝트들이 달려서 하나의 커밋을 구성함

    • git cat-file -t ce013

    • git cat-file blob ce013

    • git cat-file -t HEAD

    • git log -n1

    • git cat-file -t 7da33cf4

    • git cat-file commit 7da33cf4

    • git ls-tree aaa96ced2d9a1c8e ...

    • branch는 헤드에 대한 참조일 뿐

    • 커밋은 부모 커밋이 있다

    • git checkout C4 vs git checkout hello

    • git은 diff를 저장하는 것이 아니라 전체를 저장한다.

    • svn은 diff를 저장한다

    • tree .git

    • 브랜치를 많이 만들어도 용량이 증가하지 않는다.

    • git status

    • git checkout master

    • 브랜치는 커밋에 대한 참조일 뿐 아무것도 아니다.

    • 깃에는 커밋밖에 없다. 태그, 브랜치, 어쩌고는 다 참조 변수일 뿐이다 실제 존재하는 객체는 아무것도 없다.

    • git reset —hard Head~1 시에 복원하는 법

    • git branch test 체크섬

    • git reflog 모든 참조 변수들의 로그를 보는 명령

    • git push 로컬 저장소에 있는 것을 원격 저장소로 보냄

Released under the MIT License.