어제는 버전이란 무엇인지, MarkDown이 무엇인지 배울 수 있었다.
특히 필자는 버전에 대한 궁금증과 배우고자 하는 욕심이 있었다. 취업을 준비하면서 Git에 대한 이해를 필수사항이나 우대사항으로 추가해놓은 기업이 거의 대부분이었다.
필자도 Git과 Github를 사용해왔지만 사실 잘 알고 사용한 것은 아니다. 그냥 기록용으로 또 솔직히는 이게 어떻게 작동이되고 그 원리에 대한 이해가 없었다.(그래서 merge, push, commit을 이해없이 사용했다)
하지만 김송아 강사님의 Git에 대한 강의 덕분에 정말 이제는 이해할 수 있게 되었다. 그 내용을 한번 정리해보겠다!
버전(Version)은? 유의미한 수정사항이라고 저번 시간에 학습하였다. 결국 내가 프로젝트에서 하나의 파일에서 기능을 추가한다면 그건 유의미한 수정사항이 되고 이는 버전에 변경이 된다.
버전=> 수정사항
즉 버전관리시스템(Version Control System)은 수정사항을 관리해주는 시스템이라고 봐도 무방하다.
그럼 이를 어떻게 관리할 수 있을까? 3가지의 방법이 있다.
Git은 결국 내 컴퓨터에 설치되는 프로그램이다.
이렇게 생각하면 굉장히 간단하다. 내 컴퓨터에 설치되는 프로그램에 불과하다.ㅎㅎ 그런데? 나의 수정사항을 모두 지켜보고 기억할 수 있다. 이게 핵심이다.
Git은 내 컴퓨터에 설치되는 프로그램!+ 나의 수정사항(Version)에 대한 정보를 기억, 기록 할 수 있다.
Git을 사용하면 나의 코드가 변경되는 내용과 그 시점을 기억할 수 있다. 그럼 어떻게 될까??
자 나는 파일이 1개만 가져도 해당 파일 시점에서 Git이 기억을 해주기 때문에 1개의 파일로 여러개의 버전관리가 가능해진다.
결국 나의 Local에서는 수정3에 대한 파일만 가지고 있겠지만 각 수정 1, 수정2, 수정3을 기억하도록 Git에게 기억을 요청하는 메세지를 보내면 Git은 해당 시점의 수정내용(Version)을 기억해준다.
대단하다!!!!!
그럼 내 메모리에 이득이 있다. 만약 Git이 없었다면??
아마도 파일을 굉장히 많이 복사해서 해당 시점의 파일본 그리고 또 수정되는 파일본 또 앞으로 수정할 파일본
이렇게 굉장히 많은 파일이 필요했을 것이다.
이렇게 말이다.
즉 Git은 내 프로젝트의 History를 기억해주고 해당 시점으로 갈수도 있게 해준다.
그럼 GitHub는 무엇일까??
Git은 분산VCS(Version Contol System)로 결국 원격 컴퓨터와 소통이 가능하다. 즉 원격 컴퓨터에서 해당 프로젝트 파일을 가져올 수 있다.
여기서 GitHub는 그 "원격 컴퓨터 기능을 한다."
자, Git만 사용한다면 Local에서만 나의 History를 살펴볼 수 있다. 그리고 해당 시점으로 돌아갈 수 있다. 즉, Version관리가 Local에 한정된다. 그렇게 되면 협업은 어떻게 하겠는가??
Github는 협업이 가능하고 또 다른 Local에서 접근이 가능하도록 하는 Git들의 Hub이다.
GitHub는 다른 컴퓨터에서 Git기록을 가져올 수 있는 Hub
우리는 Git을 통해 우리의 프로젝트의 Version을 관리한다. 그럼 해당 Version을 GitHub에게 저장할 수 있는 것이다. GitHub를 통해 우리는 해당 프로젝트의 Version에 접근할 수 있다.
즉, 다른 Local에서 나의 Git 기록에 접근이 가능한 것이다.
그림으로 살펴보면 더 쉽다.
결국 이게 가능하다는 것이다. 더 쩌는게 있다.
더 대단한 점은 최종버전을 Github에 저장을 하더라도 Git이 기억하는 Version에 대한 정보도 함께 저장이 된다는 점이다.
즉, Github를 통해 다른 컴퓨터에서 해당 프로젝트를 가져오더라도 프로젝트의 전체 History를 확인할 수 있고 해당 Version을 접근할 수 있다는 점이다.
Git: 내 컴퓨터에 설치된 수정사항을 감지하는 프로그램, 이를 통해 수정된 시점을 기억해 Version을 생성하고 기억할 수 있다.
Github: 원격컴퓨터로 내 프로젝트를 저장할 수 있다, 이때 프로젝트의 버전 전체 히스토리가 저장돼 협업을 가능하게 한다.
“내 컴퓨터에 깃이 깔려있으면 버전관리를 로컬로할 수 있을 뿐 아니라 깃허브와 소통(백업,복구등)을 할 수 있다.”
“다른 컴퓨터에도 깃이 깔려 있으면 깃허브를 통해서 소통(다운로드,복제,백업) 할 수 있다."
자, Git을 이제 실습하기 전에 CLI와 GUI에 대해 설명을 해주셨다. 그 이유가 무엇일까??
Git은 원래 CLI를 통해 접근이 가능했다. 현재는 VScode와 같은 IDE가 워낙 잘되어 있어서 CLI가 아닌 GUI로도 Git과 소통을 할 수 있다. 그럼 CLI와 GUI가 무엇인지 알아보자.
GUI Graphic User Interface의 약자이다. 즉, Graphic으로 컴퓨터와 소통하는 것이다. 사용자를 화면을 통해 컴퓨터에게 명령을 내릴 수 있다. 이게 GUI이다. 우리가 마우스 클릭으로 뭔가를 누르고 원하는 결과 값을 얻는다면 이는 GUI를 통한 소통이 된다.
CLI는 Command Line Interface 의약자로 명령줄 인터페이스라고 생각하면된다. 우리가 Terminal을 사용해 뭔가를 다운로드 받고 또 명령을 내릴 때가있다. 결국 컴퓨터랑 뭐로 소통할래??
했을때 명령줄로 소통할래! 라고하면 CLI를 사용하는 것이다.
그런데 Git은 원래 CLI로 소통해왔고 그것이 "근본" 이기때문에 이를 알아야한다고 생각한다.
Git은 CLI로 소통하는 것이 "근본" (지금은 워낙 IDE, GithubDesktop등이 잘나와서 그렇지 원래는..CLI)
사실 프로젝트를 진행하면 기본 명령어를 사용한 경험은 있지만 이것이 CLI 명령어 인줄도 모르고 사용했었다. 이젠 알 수 있다!! 그 기본 명령어 몇개만 정리를 해보겠다.
- ls: 이 폴더안에 어떤 파일이 있는지 알 수 있다.
- ls -a: 이 폴더안에 숨김파일을 포함해 어떤 파일이 있는지 알 수 있다.
- mkdir: 폴더만들기
- cd: 여기폴더로 이동해줘
- cd ..: 이전 폴더로 이동해줘