리눅스 개발자인 리누스 토르발스이 개발한 것으로 분산 버전 관리 시스템이다. 다른 개발자들과 함께 업무를 할 때 예전에는 중앙집중식으로 버전 관리를 했으나 중앙집중식으로 관리를 하게 되면 서버의 데이터가 다 타버렸을 때, 복구할 수 없다는 단점이 있다. 이러한 단점을 방지하기 위해 만든 것이 git
이다. 로컬에 원격 Repository의 모든 데이터를 복제하기 때문에 개발자의 수만큼 백업이 되어있다.
GitHub과 Gitlab은 git을 통해 이용하는 Cloud서비스
CLI(Command-Line Interface) <-> GUI(Graphic User Interface)
CLI : 명령어를 통해 사용자와 컴퓨터가 상호작용을 하는 방식 ex)MacOS - terminal / Windows - 명령 프롬프트(.cmd)
Why CLI?
home : C: > user > 현재 로그인한 사용자
git bash: 쉘(Shell)이란 키보드로 입력한 명령어(Command)를 운영체제(OS)에 전달하여, 키보드로 입력한 명령어를 실행하게끔 하는 프로그램
왜 Typora ?
1. 실시간 마크다운 변환
2. 제공이미지 / 표 삽입
Working Directory
Staging Area
Repository
Staging Area : commit으로 남기고 싶은, 특정 버전으로 관리하고 싶은 파일이 있는 곳
commit: Staging Area안의 파일 하나 하나를 기록하는 것이 아니라, Staging Area 자체를 새로운 버전으로 기록함
- git init: local repository 생성 및 초기화
- git add 파일이름.확장자: 작업 디렉토리(working directory) 상의 변경 내용(삭제, 수정, 파일 생성 등... )을 버전으로 관리하고자, Staging Area에 추가하는 명령어
- git add . : 현재 Working Directory의 모든 변경사항을 Staging Area에 올리는 명령어
- git status: 현재 폴더의 git 상태를 확인하는 명령어
- git commit -m 메시지내용: '메시지 내용'을 커밋 메시지(수정 이유)로 남기면서 버전을 기록하는 명령어
- git log: 커밋한 기록을 확인하는 명령어
- git log --oneline : 커밋한 기록을 간단하게 한 줄로만 확인하는 명령어
- git remote add origin 원격레포지토리url: git과 원격 저장소 연결하는 명령어
- git remote -v: origin http://github.com/~~ 등록한 Remote Repository 정보 확인
- git push origin master: 연결된 원격 저장소(여기서 원격 저장소의 이름은 origin, 브랜치는 master 브랜치)에 로컬의 변경사항 업데이트 하기(master 브랜치에 업데이트)
- git push -u origin master:
- git push- git pull origin master : 원격 저장소의 변경 사항을 업데이트(원격 저장소로부터 받아와서 sync)
- git clone 원격레포지토리url : 원격 저장소를 로컬 저장소로 복제해온다
원격 저장소에 Push하기 전에 반드시 최소 하나 이상의 Commit을 가져야한다.
새로운 디렉토리 생성
버전 남기기(remote repository로 push하기 전에 반드시 commit해야 함)
흐름의 분기
pointer는 하나의 커밋만 바라볼 수 있음
master은 일반적으로 상용 pointer
- git branch : branch 리스트를 확인하는 명령어
-*
이 붙은 branch가 HEAD가 바라보는 branch- git branch branch이름 : 새로운 'branch이름'이름의 branch 생성하는 명령어
- git switch branch이름 : HEAD가 바라보는 branch를 변경하는 명령어
- git switch -c branch이름 : (-c : create ) 'branch이름'이름의 branch를 생성하고 pointer을 생성한 branch로 옮기는 명령어
3-way Merging의 방법으로 머지를 하면 merge commit의 상태를 비교적 확실하게 확인할 수 있다.
- 내 브랜치 commit
- 다른 사람의 브랜치 commit
- 두 브랜치의 공통 조상이 되는 merge commit
.gitignore
: 저장소에 추가되면 안 되는 파일과 폴더 목록을 모아놓은 파일
git repository를 생성하자마자 .gitignore파일을 생성해야 함
참고 gitignore.io
gitignore.io: 언어, OS 나 Framework, IDE 별로 저장소에 추가되면 안 되는 파일과 폴더 목록인 .gitignore 를 자동으로 생성해 주는 서비스