Git과 GitHub 이해하고 사용하기

Git과 GitHub란?

Git

로컬에서 관리되는 버전 관리 시스템(VCS: Version Control System)

git은 자신의 코드를 관리할 수 있도록 하는 버전 관리 시스템이다.

git은 클라우드가 아닌 자신의 로컬에서 관리하기 때문에 인터넷이 필요하지 않은 장점이 있다.

GitHub

클라우드 방식으로 관리되는 버전 관리 시스템

github를 통해 다른 사람들과 코드 공유가 가능해 협업이 가능하다.

 

Git을 사용해야 하는 이유?

그렇다면 git을 사용해야 하는 이유는 무엇일까?

 

1. 개발하다 보면 프로그램의 버전을 관리를 해야 하는데 그때 git이 버전을 관리하는데 유용하다.

특정 시점의 버전의 기능을 다시 가져오거나, 복원해야 하는 상황이 발생할 수 있기 때문이다.

 

2. 협업에 효과적이다.

큰 규모의 프로젝트를 진행하면 여려 명의 개발자가 같이 진행하기 때문에 각자 맡았던 부분을 모아 수정하거나 합치기에 효과적이다.

즉 여러 명이 동시에 작업하는 병렬 개발이 가능하다.

 

GitHub Repository 생성하기

github 사이트에 들어가서 Repositories 탭에 들어간다음 우측 상단의 new 버튼을 눌러 새로운 repositories를 만들어준다.

 

repository name을 정해준다. 

저장소 이름을 작성할 때는 coding convention 중 하나인 *naming convention을 참고하여 작성한다.

 

필요한 경우 README file과 .gitignore파일을 추가해서 생성해준다.


gitignore란?

gitignore파일은 git으로 프로젝트를 관리할 때, 특정 파일들이 원격 저장소에 올라가지 않도록 관리하는 파일이다.

자동으로 생성되는 로그파일이나 외부 패키지, 깃에 공유되어서는 안 되는 api키와 같은 내용이 작성된 파일들이 올라가지 않도록 도와준다.


*Naming Convention - 네이밍 컨벤션

네이밍 컨벤션은 Coding Convention 중 하나이다.

         → 사용하는 이유는 “가독성”때문이다.

 

네이밍 컨벤션의 종류

  • Lower Camel Case (소문자 카멜 케이스) 

- 단봉 낙타 표기법 → 보통 카멜 케이스를 말하면 이 단봉 낙타 표기법을 말한다.

- 각 단어의 첫 문자를 대문자로 표시하지만, 첫 글자는 소문자로 표시한다.

- ex) camelCase, helloWorld

 

  • Upper Camel Case (대문자 카멜 케이스)

- 쌍봉 낙타 표기법 

- 모든 단어의 첫 문자를 대문자로 표시한다.

- ex) CamelCase, HelloWorld

 

  • snake_case

- 스네이크 표기법

- 각 단어의 사이를 _(언더바)로 구분한다.

- ex) snake_case, hello_world

  • kebab-case

- 케밥케이스

- 각 단어의 사이를 -(하이픈)로 구분한다.

- ex) kebab-case, hello-world


Git 명령어

git init → 저장소 생성(초기화)

git status → 현재 상태 확인

git remote add origin [github 저장소 주소] → 원격 저장소 추가

git remote -v → 원격 저장소 목록 조회

git fetch → 원격 저장소의 파일들을 로컬 저장소로 가져온다.

git add [파일명] → 파일을 stage영역에 넘긴다.

git add . → 현재 폴더의 변경된 모든 파일을 한 번에 stage영역에 넘긴다.

git commit → commit은 파일/폴더의 변경 사항들을 기록하는 것을 의미한다.

                       *vim 편집기 실행 “i”를 눌러 입력 모드로 전환 후 제목과 본문 내용을 쓴 다음 :wq를 이용해 저장하고 나온다.

git push [저장소명] [브랜치명] → 원격 저장소로 변경된 파일들을 업로드 (원격 저장소와 로컬 저장소가 동일한 상태가 됨)

git diff → 파일의 어떤 내용이 변경되었는지 차이점을 비교할 수 있다.

git rm [파일명] → Tracked 상태의 파일을 제거하여 Untracked 상태로 만든다.


*vim

vim(Vi IMproved)은 vi호환 텍스트 편집기이고 CUI(명령줄 사용자 인터페이스)를 기반으로 한다.

vi는 “visual editor”의 의미이다.

CUI와 GUI

CUI(Character User Interface)는 문자 유저 인터페이스라고 불린다.

쉽게 말해서 DOS나 명령 프롬포트 같이 화면과 글자만 있는 구조이다.

 

GUI(Graphical User Interface)는 그래픽 사용자 인터페이스라고 불린다.

사용자가 쉽게 사용할 수 있도록 그래픽을 통해 작업할 수 있다.

vim 기본 명령어

:w → 파일을 저장한다.

:q → 파일을 종료한다.

:q! -> 파일을 강제 종료한다.

:wq (write quite) → 파일을 저장한 후에 종료한다.

:wq! → 파일을 강제로 저장한 후에 종료한다.


터미널 기본 명령어

  • mkdir 디렉토리명
    - 새로운 폴더 생성 (make directory)
  • ls
    - 조회하기(list) 파일 및 디렉토리의 리스트
  • cd 디렉토리명
    - 해당 디렉토리로 이동 (change directory)
  • cd ..
    - 상위 디렉토리로 이동
  • clear / cmd + r
    - 화면 클리어하기 (지우기)
  • rm
    - 삭제하기 (remove)
  • rmdir 디렉토리명
    - 폴더 삭제하기 (remove directory)