Skip to content

Latest commit

 

History

History
 
 

Quest00

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Quest 00. 형상관리 시스템

Introduction

  • git은 2021년 현재 개발 생태계에서 가장 각광받고 있는 버전 관리 시스템입니다. 이번 퀘스트를 통해 git의 기초적인 사용법을 알아볼 예정입니다.

Topics

  • git
    • git clone, git add, git commit, git push, git pull, git branch, git stash 명령
    • .git 폴더
  • GitHub

Resources

Checklist

  • 형상관리 시스템은 왜 나오게 되었을까요?

    • 인터넷의 발달에 더해 개발환경 또한 팀 중심으로 변화하면서 소프트웨어 개발이나 프로젝트 관리가 힘들어졌기 때문이다.
  • git은 어떤 형상관리 시스템이고 어떤 특징을 가지고 있을까요? 분산형 형상관리 시스템이란 무엇일까요?

    • 문서나 파일이 수정되었을 때 변경사항을 추적하고 통제하여 추후에 다시 찾아 보아야 할 때, 편리하게 관리할 수 있게 하기 위해서 입니다.
  • git은 어떤 형상관리 시스템이고 어떤 특징을 가지고 있을까요?

    • 분산형 형상관리 시스템을 가진 형상관리 도구입니다.특징으로는 매우 빠른 처리속도를 가지고있고 로컬에 다수의 독립성이 보장되는 branch를 허용하고 쉽게 생성, 병합, 삭제를 지원합니다. 따라서 팀 개발을 위한 분산 환경 코딩에 최적화 되어있습니다.
  • 분산형 형상관리 시스템이란 무엇일까요?

    • 파일을 저장하는 서버가 있는것은 중앙 집중식 VCS와 동일 하지만 수정을 위해 프로젝트 전체를 로컬에 다운로드 받은 뒤 수정하는 방식의 시스템이다. 중앙서버가 다운되더라도 개별사용자는 개별 작업이 가능하고 서버가 날아가더라도 내용은 남아있으므로 안정적이다. 수정시에도 개인이 혼자 수정중이므로 충돌의 염려가 없다.

    • git은 어떻게 개발되게 되었을까요? git이 분산형 시스템을 채택한 이유는 무엇일까요?

      • 2005년에 리누스 토르발스가 리눅스 커널의 개발을 위해 만들었으며, 코드가 잘못되었을 때 코드를 되돌릴 수 있으며, 따로 파일을 전달할 필요 없이 저장소에 있는 코드를 가져와 여러 사용자가 코드의 기능을 작성할 수 있으며 속도가 빠르기 때문이다.
  • git과 GitHub은 어떻게 다를까요?

    • Git은 DVCS(분산형 버전관리 시스템)을 말하며, Github는 Git을 사용하는 클라우드서버를 통해 Git을 사용하는 프로젝트들을 지원하는 웹호스팅 서비스 입니다.
  • git의 clone/add/commit/push/pull/branch/stash 명령은 무엇이며 어떨 때 이용하나요? 그리고 어떻게 사용하나요?

    • git clone: 기존 리포지토리를 대상으로 하여 복제본 또는 대상 리포지터리의 복제본을 만드는데 사용되는 Git명령어이다.
    • git add: 작업 디렉토리 상의 변경내용을 스테이징 영역에 추가하기 위해 사용하는 Git 명령어입니다.
    • git commit: git add로 스테이징된 추가/변경사항들을 커밋하는 명령어입니다. (변경사항 확정)
    • git push: 로컬 저장소에서 변경한 내용을 원격저장소로 업로드 할때 사용하는 깃 명령어이다. git push <remote repo> <branch>의 구성으로 사용한다.
    • git pull: 원격 저장소에서 최신 변경사항을 가져와 로컬 저장소에 병합할때 쓰는 명령어이다.
    • git branch: 브랜치를 생성하거나, 브랜치 목록을 확인하는 명령어입니다.
    • git stash: 현재 작업중인 변경사항을 스택에 저장하는 명령어로, 임시적으로 변경사항을 저장할 때 사용합니다.
  • git의 Object, Commit, Head, Branch, Tag는 어떤 개념일까요? git 시스템은 프로젝트의 히스토리를 어떻게 저장할까요?

    • object: Git에서 모든 데이터를 저장하는 형식입니다. 그 안에는 파일의 내용과 폴더의 구조, 이력등을 모두 포함하고있습니다.
    • Commit: 파일과 폴더의 상태를 하나의 버전으로 만들어서 저장하는것을 의미합니다. 부모-자식간의 관계를 가지고 있으며 이를 통해 이전 Commit과의 차이를 추적할 수 있습니다.
    • Head: 현재 작업중인 Branch의 가장 최근 Commit을 가리키는 포인터로, 작업중인 Branch가 변경되면 함께 변경됩니다.
    • Branch: Commit의 집합으로 동시의 Git의 가장 기본적인 브랜치 관리방식 입니다. 각각 독립적인 Commit히스토리를 가지고 있으며, 서로 다른 Branch끼리 병합할 수 있습니다.
    • Tag: 특정 Commit에 이름을 부여하는 것을 의미합니다. 보통 넘버링을 할 때 사용되며 commit을 가리키는 포인터입니다.
  • 리모트 git 저장소에 원하지 않는 파일이 올라갔을 때 이를 되돌리려면 어떻게 해야 할까요?

      1. git revert 명령어를 이용한 되돌리기 방법이 있습니다. 위 명령어는 이전 커밋을 취소하고 새롭게 커밋을 작성하여 푸쉬해야합니다. git revert <이전 커밋 식별자>의 형식을 따릅니다.
      1. git reset을 활용하여 강제로 이전 커밋으로 되돌릴 수 있습니다. git checkout <이전 커밋 식별자> 를 통해 이전 커밋으로 이동한 뒤 git reset -- hard <이전 커밋 식별자> 명령어로 해당 커밋의 변경사항을 모두 삭제한 뒤 git push --force origin <branch name>을 통해 변경사항을 리모트 저장소에 강제로 푸시 할 수 있습니다.

Quest

@@ -31,6 +50,7 @@

  • 이 문서가 있는 폴더 바로 밑에 있는 sandbox 폴더에 파일을 추가한 후 커밋해 보기도 하고, 파일을 삭제해 보기도 하고, 수정해 보기도 하면서 각각의 단계에서 커밋했을 때 어떤 것들이 저장되는지를 확인합니다.
  • clone/add/commit/push/pull/branch/stash 명령을 충분히 익혔다고 생각되면, 자신의 저장소에 이력을 push합니다.

Advanced

  • Mercurial은 어떤 형상관리 시스템일까요? 어떤 장점이 있을까요?
  • 실리콘밸리의 테크 대기업들은 어떤 형상관리 시스템을 쓰고 있을까요?