Git이란?
- Version Control System(VCS)
- 예를 들어 과제 1,2,3,4 그리고 과제 (최종) <-- 버젼관리 시스템이다.
코드 버전관리하는 이유?
- 수정할때 마다 파일을 새로 만들면 관리가 힘들기 때문에
- 언제든 이전 버전의 코드로 돌아갈수있기 때문에
- 이력을 남기기 위해
- 하나의 프로젝트를 두고 여러명의 개발자들이 협업할수 있음
Github이란?
- Git을 사용한 프로젝트들의 저장소
- 개발자들의 Social Network
Git vs Github
- 깃은 인터넷이 필요가없다 로컬에서 할수있다.
- 깃허브는 인터넷이 필요하다.
- 즉 깃은 프로젝트의 버전관리를 도와주는 시스템이고 깃허브은 깃을 이용해 버전관리를 한 프로그램들을 모운 집합관리소다.
Git 실습 순서
1) $ mkdir git && cd git
하면 깃 폴더 만들고 바로 그폴더로 이동한다.(빠른 작업을 위해)
2) $ git init
Initialized empty Git repository in git folder
3) $ git clone [url]
4) $ git branch [name]
5) $ git status (틈틈히 status를 확인해줘야한다 특히 add 랑 commit할때)
6) $ vim hwukjunwoo.md (파일을 생성 .md파일 확장자다.)
7) $git status
예시) Untracked files:
(use "git add ..." to include in what will be committed)
hwukjunwoo.md
빨간색일때 추적을안한다. 추적을해야된다고 알려준다.
8) $git add . (<- 앞에 점을 생각해야한다. 추가해야되는 파일이 모두 추가가 된다.)
9) $git status
예) Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: hwukjunwoo.md
10) $ git commit -m"hwukjunwoo file added"
예) [master (root-commit) 39cb12c] hwukjunwoo.md file added
1 file changed, 1 insertion(+)
create mode 100644 hwukjunwoo.md
11) $ git status
예) On branch master
nothing to commit, working tree clean
12) $ git log
commit 39cb12c117b6c683e46cbf8bcc65984318275a54 (HEAD ---> master)
Author: hwukjunwoo hwukjunwoo@gmail.com
Date: Wed Nov 25 14:54:52 2020 +0900
hwukjunwoo.md file added
Github
create a new repository
repository name
push : 깃허브에 푸쉬한다.
로컬저장소에 remote주소를 추가해준다.
13) $ git remote add origin https://github.com/hwukjunwoo/backend_15.git
14) $ git remote -v
origin https://github.com/hwukjunwoo/backend_15.git (fetch)
origin https://github.com/hwukjunwoo/backend_15.git (push)
15) $ git branch -M main
master가 main르로 바꾼다.
16) $ git push -u origin main
-u최초에 한번하면된다.
하면 로그인하면 푸쉬가 잘된다.
노란색은 아직 수정사항이 add가 다 안됬다.
초록색은 완벽히 push해도된다.
1) main에서 pull를 받는다.
git pull origin main
2) git checkout 내브랜치이름
3) 내브랜치에 메인에서 fetch한 내용을 merge합니다.
git merge main
git status
새로운 로컬 저장소를 생성하기
$ git init [project_name]
저장소 가져오기
$ git clone [url]
로컬 브랜치 보기
$ git branch
//많이 사용해야하는 이유는 공간을 차지하지않고 그리고 it is easier to logically divide up work.
로컬과 원격 브랜치 보기
$ git branch -av
브랜치 변경하기
$ git checkout
브랜치 생성하기
$ git branch [name]
동시에 브랜치 생성 + 체크아웃
$ git checkout -b [your-branchname]
브랜치 삭제하기
$ git branch -d
원격 브랜치를 추적하는 새로운 브랜치 만들기
$ git checkout --track <remote/branch>
원격 브랜치 추적하기
$ git branch -u <remote/branch>
현재 커밋에 태그 달기
$ git tag
파일의 변경 사항을 다음 커밋에 반영하기
$ git add [file]
모든 변경 사항을 다음 커밋에 반영하기
$ git add .
메시지와 함께 커밋하기
$ git commit -m "commit message"
모든 변경 사항을 반영하면서 커밋하기
$ git commit -a
마지막 커밋 수정하기(published commit에는 하지 말 것!)
$ git commit --amend
원격 저장소의 변경사항 가져오기
$ git fetch
원격 저장소의 변경사항을 가져오고 머지하기
$ git pull
원격 저장소의 변경사항을 가져오고 리베이스하기 (순서를 맞추기위해서)
$ git pull --rebase
원격 저장소에 변경사항 발행하기
$ git push
원격 저장소에 태그 발행하기
$ git push --tags
병합하기
$ git merge
리베이스하기
$ git rebase
임시로 변경사항 저장하기
$ git stash
임시 변경사항 복원하기
$ git stash pop
임시 변경사항 보기
$ git stash list
앞에 점이붙으면 숨김이다. (ex).git