git은 분산 버전 관리 시스템(DVCS)으로, 리누스 토르발스 라는 분이 기존 리눅스 커널 관리 툴을 개선하고자 만든 프로그램이다.
git 자체는 로컬에 설치하는 프로그램이다.
단순한 파일을 명령어를 통해 git으로 관리하게 만들면, 커밋을 할 때마다 스냅샷을 만들어 버전에 따라 어떤게 바뀌는지 기록하게 된다.
github는git을 기반으로 한 웹 호스팅 서비스로 개발자들이 원격으로 중앙에서 프로젝트를 백업해두고, 버전 관리 해주고, 협업도 도와주는 시스템이다.
github는 git을 사용하는 여러 개발자가 동시에 작업할 수 있도록 하는 플랫폼을 제공해준다.
git이 없다면 로컬에서 버전 관리를 위해서 버전마다 파일을 통째로 복붙해하고 github가 없다면 로컬에 가지고 있는 파일이 손상되면 복구하기 어렵다.
즉, git과 github는 다음과 같이 정리할 수 있다.
git은 내 컴퓨터 안에서 버전을 관리 해주는 시스템이자, github와 소통할 수 있게한다.github는 서버 컴퓨터에서 백업을 담당하는 시스템이자, 내 컴퓨터와 별도로 버전 관리도 해준다.해당 사이트에 들어가면 os에 맞는 다운로드 버튼을 클릭해서 문서에 나오는것 처럼 다운하면 된다.
git사이트의 documentation은 협업에서도 자주 보게될거라 참고하면 많은 도움이 된다고 한다.
설치를 성공한 후 터미널에서git --version으로 확인할 수 있다.

CLI(Command Line Interface): 텍스트 기반 인터페이스며, 위의 셸(or 터미널)처럼 키보드를 통해 명령어를 입력하여 컴퓨터와 상호작용하는걸 말합니다.
GUI(Graphical User Interface): 그래픽 요소를 사용하여 사용자 친화적으로 컴퓨터와 상호작용할 수 있는것을 말합니다. 대표적으로 바탕화면 폴더 아이콘을 더블클릭해서 실행하는 것과, 휴대폰 화면 터치하여 어플을 실행하는게 있습니다.
CLI방식으로 실행할 때 다음과 같은 명령어를 사용하게 된다.
ls: 파일보기ls -a: 숨겨진 파일도 모두 보기cd [디렉토리 명]: 디렉토리 이동
mkdir [디렉토리 명]: 디렉토리 생성
git init: git 저장소 생성(초기화)
.git을 생성해서 해당 파일을 git이 관리하도록 저장소를 만든다.git status: git 파일 상태 확인git init을 하지않으면 fatal이 나옴git add [명령어]: 커밋에 파일 변경사항을 추가할때.git 폴더 안에 명령어로 들어온 파일을 트래킹 해달라고 요청한다.git commit: 커밋을 생성할때
git add를 했을때는 버전 저장하기 전에 관리중인 걸로 commit을 해야 저장이 된다.git remote -v
GUI에서는 다음의 그림과 같이 되어있다.

Changes옆에 마우스를 올리면 +버튼이 나오는게 git add
Message가 되어있는 곳에 커밋 메세지를 입력하고 commit버튼을 누르면 git commit을 하게된다.
vscode에 있는 Extensions로 git log를 GUI로 볼 수 있게 해주는 툴이다.

vscode의 source Control에서 시계모양 문양을 클릭하면 커밋 메세지와 어떤걸 수정했는지 쉽게 볼 수 있다.
터미널은 원래 사용자들이 컴퓨터에 접속하기 위해 사용했던 단말기를 의미했습니다. 하지만 지금은 개인용 컴퓨터를 사용하기 때문에 원격으로 컴퓨테어 접속하거나 명령어 입력을 통해 컴퓨터를 직접 제어하기 위해 사용하는 소프트웨어를 터미널 혹은 콘솔(Console)이라고 한다.
모든 운영체제는 기본적으로 터미널 프로그램을 내장하고 있으며 별도 프로그램도 많이 개발되었다.
쉘, 자령해석프로그램은 운영 체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다.
셀은 사용자와 운영 체제의 내부(커널)사이의 인터페이스를 감싸는 층이기 때문에 그러한 이름을 붙였다.
즉, 터미널을 사용하기 위한 소프트웨어 환경을 의미한다.
예를들어) 키보드 입력과 명령을 실행할 수 있도록 해주고 디렉토리의 이동과 파일의 생성등을 지원하며 필요시 스크립트 작성을 지원해 복잡한 작업을 한번에 처리할 수 있도록 하는등의 기능을 제공합니다.
이말은 터미널 위에 쉘이 실행된다는 말로 이해했다. 터미널은 곧 명령을 입력하는 쉘을 실행하기 위한 기본 토대라고 볼 수 있다.