diff --git a/Quest00/README.md b/Quest00/README.md index 006bc98ad..736a98d5d 100644 --- a/Quest00/README.md +++ b/Quest00/README.md @@ -16,12 +16,90 @@ ## Checklist * 형상관리 시스템은 왜 나오게 되었을까요? +* - + * git은 어떤 형상관리 시스템이고 어떤 특징을 가지고 있을까요? 분산형 형상관리 시스템이란 무엇일까요? + +- 특징 : 2005년 개발된 형상관리 도구로 매우 빠른 속도를 가지고 있으며 분산형 관리 시스템을 가지고 있다. 다른 형상관리 도구에 비해 다양한 기능을 지원하며 최근 가장 대중화되어 사용되고 있다. 처음 사용시 다른 도구에 비해 사용법을 숙지하는데 어려움을 가질 수 있으나 로컬 관리와 중앙 관리가 모두 가능하여 장소에 구애받지 않고 협업을 가능케 한다. + +* 분산형 형상관리 시스템이란, + - 분산버전관리 시스템에서 저장소는 모든 클라이언트가 저장소가 될 수 있다. 예를 들어 TFS에서 get latest version을 통해 저장소에서 프로젝트를 가져오면, 저장소에서 사용자의 컴퓨터에 최신의 코드를 받아오게 된다. 이 말은 소스 코드는 물론 그동안의 변경 이력까지 모든 정보를 가져와 로컬 컴퓨터 또한 완전한 저장소가 된다 + + + * git은 어떻게 개발되게 되었을까요? git이 분산형 시스템을 채택한 이유는 무엇일까요? + - * git을 분산형 시스템으로 채택한 이유 + - 하나의 서버에 집중되어 모든 작업 내역이 저장되는 중앙 집중형 형상관리 체계와 달리 개개인의 작업 히스토리 역시 각자의 서버에 저장해 관리될 수 있어 같은 파일 하나를 여러명이 동시에 작업하는 병렬 개발이 가능하며 'commit'이라는 행위 자체가 공동 코드로 즉시 병합됨을 의미하지 않아 개인 작업/공동 작업으로 분리될 수 있다. 따라서, 예기치 못 한 충돌이나 변경 사항을 해결하기 위한 시간을 최소화 시켜준다 + - * git과 GitHub은 어떻게 다를까요? + - git은 형상관리 도구이며, github는 git을 공유/업로드 할 수 잇는 눈에 보이는 웹 호스팅 서비스, 즉 플랫폼이다. + * git의 clone/add/commit/push/pull/branch/stash 명령은 무엇이며 어떨 때 이용하나요? 그리고 어떻게 사용하나요? + - git clone : 원격 저장소에 있는 작업/프로젝트를 로컬 저장소로 가지고 오는(복제) 명령어 +- git add : 작업 중인 로컬 저장소에 있는 파일들을 스테이징 상태로 변경시켜주는(커밋 가능한 상태) 명령어 +- git commit : 로컬 저장소(디렉토리)에 있는 모든 파일에 대한 스냅샷(이전 스냅샷과 비교하여 변경된 부분)을 기록하는 명령어 +- git push : 로컬 저장소에서 작업한 후 commit한 내역을 원격 저장소로 보내는 명령어 +- git pull : push와 반대로 원격 저장소에 업로드된 작업 내역을 로컬 저장소로 가져오고 싶을 때 사용하는 명령어 +- git branch : 여러 명이 각기 다른 저장소에서 작업하고 싶을 때 작업 공간(branch)를 만들어주는 명령어로 모든 브랜치의 목록을 보거나, 생성하고 삭제할 수 있음 +- git stash : 지금 바로 commit 하고 싶지는 않지만 다른 작업을 해야 할 때 저장해놓고 나중에 가져와서 쓰려고 할 때 사용하는 저장소이자 명령어 + * git의 Object, Commit, Head, Branch, Tag는 어떤 개념일까요? git 시스템은 프로젝트의 히스토리를 어떻게 저장할까요? + - **Object 파일 개념 정리** + +깃은 Git.디렉토리 안에 objects 디렉토리에 파일과 관련해 총 세가지 유형을 가지게 된다. + +1. blob : 실제 데이터를 저장 + +2. tree : commit한 시점의 버전의 파일들의 주소를 저장 + +3. commit : tree의 주소와 이전 버전의 주소를 저장 + +이는 위로 갈수록 세부적인 실제 데이터를 가지게 된다. + +working directory (working copy, working tree) + +기본적으로 우리가 볼 수 있는 디렉토리 우리가 지금 현재 파일을 다루는 디렉토리를 말한다. + +--- + +- Head : 모든 브렌치에는 HEAD값이 존재하는데, HEAD는 브렌치의 마지막 커밋 즉 현재 속한 브랜치의 가장 최신 커밋을 의미합니다. + +## **예시** + +### checkout으로 앞뒤 이동 + +⭐️ **^ 또는 ~: 갯수만큼 해당 브렌치의 이전(옛날)으로 이동** + +``` +git checkout HEAD^ +``` + +``` +git checkout HEAD^^^ +``` + +## **⭐️ -: 해당 브랜치의 한 단계 최근 커밋으로 이동** + +``` +git checkout - +``` + +--- + +- Commit : commit 객체는 tree 객체에 대한 참조, 부모(이전 커밋) 객체와 작성자와 같은 메타 데이터에 대한 참조를 저장한다. +- Branch : 효과적으로 파일의 변경사항에 대한 스냅샷을 보여주는 포인터의 일종이다. 새로운 기능을 추가하거나 버그/이슈를 수정할 때 브랜치를 생성/사용하여 효율적으로 작업을 할 수 있다. +- Tag : 특정 commit에 별명을 붙여주는 명령어로 Tag를 통해서 commit 상태로 쉽게 변경하거나 reset을 통해 돌아가는 것 역시 쉽다. release 버전을 명시해 특정 태그에 해당하는 버전을 배포할 수도 있다. + + * 리모트 git 저장소에 원하지 않는 파일이 올라갔을 때 이를 되돌리려면 어떻게 해야 할까요? + - git log에서 해당 파일 업로드된 commit id 확인하고, git reset --hard 되돌리고자 하는 commit id 를 입력 하여 되돌린다. ## Quest * GitHub에 가입한 뒤, [이 커리큘럼의 GitHub 저장소](https://github.com/KnowRe-Dev/WebDevCurriculum)의 우상단의 Fork 버튼을 눌러 자신의 저장소에 복사해 둡니다. diff --git a/Quest00/sandbox/CommitTest.txt b/Quest00/sandbox/CommitTest.txt new file mode 100644 index 000000000..f8a612e3f --- /dev/null +++ b/Quest00/sandbox/CommitTest.txt @@ -0,0 +1 @@ +commit test \ No newline at end of file diff --git a/Quest01/README.md b/Quest01/README.md index f3741ed0a..879ff8600 100644 --- a/Quest01/README.md +++ b/Quest01/README.md @@ -1,55 +1,110 @@ # Quest 01. HTML과 웹의 기초 ## Introduction -* HTML은 HyperText Markup Language의 약자로, 웹 브라우저에 내용을 표시하기 위한 가장 기본적인 언어입니다. 이번 퀘스트를 통해 HTML에 관한 기초적인 사항들을 알아볼 예정입니다. + +- HTML은 HyperText Markup Language의 약자로, 웹 브라우저에 내용을 표시하기 위한 가장 기본적인 언어입니다. 이번 퀘스트를 통해 HTML에 관한 기초적인 사항들을 알아볼 예정입니다. ## Topics -* HTML의 역사 - * HTML 4.01, XHTML 1.0, XHTML 1.1 - * XHTML 2.0과 HTML5의 대립 - * HTML5와 현재 -* 브라우저의 역사 - * Mosaic와 Netscape - * Internet Explorer의 독점시대 - * Firefox와 Chrome의 등장 - * iOS Safari와 모바일 환경의 브라우저 - * Edge와 Whale 등의 최근의 Chromium 계열 브라우저 -* HTML 문서의 구조 - * ``, ``와 `` 등의 HTML 문서의 기본 구조 - * 시맨틱 엘리먼트 - * 블록 엘리먼트와 인라인 엘리먼트의 차이 + +- HTML의 역사 + - HTML 4.01, XHTML 1.0, XHTML 1.1 + - XHTML 2.0과 HTML5의 대립 + - HTML5와 현재 +- 브라우저의 역사 + - Mosaic와 Netscape + - Internet Explorer의 독점시대 + - Firefox와 Chrome의 등장 + - iOS Safari와 모바일 환경의 브라우저 + - Edge와 Whale 등의 최근의 Chromium 계열 브라우저 +- HTML 문서의 구조 + - ``, ``와 `` 등의 HTML 문서의 기본 구조 + - 시맨틱 엘리먼트 + - 블록 엘리먼트와 인라인 엘리먼트의 차이 ## Resources -* [MDN - HTML](https://developer.mozilla.org/ko/docs/Web/HTML) -* [HTML For Beginners](https://html.com/) -* [History of the web browser](https://en.wikipedia.org/wiki/History_of_the_web_browser) -* [History of HTML](https://en.wikipedia.org/wiki/HTML) -* [StatCounter](https://gs.statcounter.com/) + +- [MDN - HTML](https://developer.mozilla.org/ko/docs/Web/HTML) +- [HTML For Beginners](https://html.com/) +- [History of the web browser](https://en.wikipedia.org/wiki/History_of_the_web_browser) +- [History of HTML](https://en.wikipedia.org/wiki/HTML) +- [StatCounter](https://gs.statcounter.com/) ## Checklist -* HTML 표준의 역사는 어떻게 될까요? - * HTML 표준을 지키는 것은 왜 중요할까요? - * XHTML 2.0은 왜 세상에 나오지 못하게 되었을까요? - * HTML5 표준은 어떤 과정을 통해 정해질까요? -* 브라우저의 역사는 어떻게 될까요? - * Internet Explorer가 브라우저 시장을 독점하면서 어떤 문제가 일어났고, 이 문제는 어떻게 해결되었을까요? - * 현재 시점에 브라우저별 점유율은 어떻게 될까요? 이 브라우저별 점유율을 알아보는 것은 왜 중요할까요? - * 브라우저 엔진(렌더링 엔진)이란 무엇일까요? 어떤 브라우저들이 어떤 엔진을 쓸까요? - * 모바일 시대 이후, 최근에 출시된 브라우저들은 어떤 특징을 가지고 있을까요? -* HTML 문서는 어떤 구조로 이루어져 있나요? - * ``에 자주 들어가는 엘리먼트들은 어떤 것이 있고, 어떤 역할을 할까요? - * 시맨틱 태그는 무엇일까요? - * 시맨틱 엘리먼트를 사용하면 어떤 점이 좋을까요? - * `
`과 `
`, `
`, `