🙋♀️ 알아볼 내용
Git : 분산 버전 관리 시스템
버전관리(VCS : Version Control System)란 : Git에서는 소스 코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있다. 코드 수정에 따른 위험성을 줄일 수 있다.
Git
▪ 로컬에서 관리되는 버전관리 시스템
▪ 소스코드 수정에 따른 버전을 관리해주는 시스템
Github
▪ 클라우드 방식으로 관리되는 버전 관리 시스템(VCS)
▪ 자체 구축이 아닌 빌려쓰는 클라우드 개념
현재 위치에 프로젝트 파일을 생성하고 작업할 것이다. 라고 선언하는 의미
git init
: 저장소 생성
testfolder라는 폴더를 생성 후 git bash에서 git init
을 해주었다.
$ git init Initialized empty Git repository in C:/coding/testfolder/.git/
git init
을 하면 해당 폴더에 .git
이라는 폴더가 생성된다.
가상의 임시저장 공간, git add
를 하고 commit
을 하기 전에 파일이 위치하는 공간
git status
: 현재 상태를 보여주며 변경 사항을 체크할 수 있다.
어떤 파일도 없는 상태에서 git status
를 하면
$ git status On branch master // master 브랜치에 있고 No commits yet // 아직 커밋 전이고 nothing to commit (create/copy files and use "git add" to track) // 커밋할 파일이 없다.
현재의 상태를 위와 같이 알려준다.
git add 파일명
: 폴더 내 해당 파일만 스테이징(add)
git add .
폴더 내 전체 변경 사항 스테이징(add) (같은 의미로 git add *
또는 git add -A
)
index.html 파일을 생성하고 코드입력 후 add하였다.
$ git add index.html
이후 git status
를 하면
$ git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: index.html
위와 같이 변경사항을 확인할 수 있다.
commit
: 폴더의 변경 내용을 저장하는 단위
git commit
: 커밋은 '의미 있는 변동사항'을 묶어서 만든다. 먼저 스테이지 상태에 두어야만(add를 해야만) 커밋을 할 수 있다.
작성 순서 : git commit -m "변동사항 기입"
변동사항 기입란에 first commit라고 코멘트하고 커밋하였다!
$ git commit -m "first commit" [master (root-commit) 3d09bf3] first commit 1 file changed, 11 insertions(+) create mode 100644 index.html
✍ git commit --amand
: 커밋을 새로하지 않고 이전 커밋에 변경사항을 추가하고 싶을 때 사용하는 옵션
로컬에 폴더를 생성하고 github
과 같은 원격저장소에 커밋을 만든 뒤 원격으로 내용을 업로드하는 것을 푸시(push
)라고 한다.
명령어 사용은 git push
✍ 그전에 폴더 최초 생성시 폴더와 github 레포지토리를 연동시켜주어야 한다.
연동시 명령어는 git remote add origin 해당 레포지토리 주소
$ git remote add origin https://github.com/ryuwisdom/ThisIsTest.git
이후에 git push
!
but, 최초 푸시할때 명령어도 따로 있다.
git push -u origin master Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Delta compression using up to 8 threads햣 Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 378 bytes | 189.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 To https://github.com/ryuwisdom/ThisIsTest.git * [new branch] master -> master Branch 'master' set up to track remote branch 'master' from 'origin'.
위와 같이 github에 업로드 된 것을 알 수 있다.
이후부터 이 파일에서 작업하고 커밋 후 push할 때에는 git push
만 입력하면 끝!
보통 혼자 관리하는 파일에서는 push까지의 작업이면 충분했다. (지금의 나...)
커밋된 결과보는 단계
git log
: 커밋된 리스트를 보고 싶을때 사용
> $ git log > commit 34dfe5ecf87e8fc9290a8ec1545b50193cee1d33 (HEAD -> master, origin/master) > Author: jihyeryu <bonnie.jr54@gmail.com> > Date: Tue Sep 29 13:04:19 2020 +0900 > > second commit > > commit 3d09bf3da0ac1aad99b3d07aa1fe2485a213f474 > Author: jihyeryu <bonnie.jr54@gmail.com> > Date: Tue Sep 29 12:40:14 2020 +0900 > > first commit
git show
: 커밋에 변경 내용이 반영되었는지 보고 싶을 때 사용
> $ git show > commit 34dfe5ecf87e8fc9290a8ec1545b50193cee1d33 (HEAD -> master, origin/master) > Author: jihyeryu <bonnie.jr54@gmail.com> > Date: Tue Sep 29 13:04:19 2020 +0900 > > second commit > > diff --git a/style.css b/style.css > new file mode 100644 > index 0000000..f71ba51 > --- /dev/null > +++ b/style.css > @@ -0,0 +1,3 @@ > +body { > > * background-color: pink; > +} > \ No newline at end of file
현재 작업과 성격이 다른 작업을 할 때 브랜치를 만든다. 깃은 기본적으로 main
이라는 이름의 브랜치를 하나 가지고 있다.
📌 10/1일부터 master-> main으로 기본 브랜치명 변경
git branch
$ git branch * main
현재 작업 내용과 목적이 다른 작업을 하기위해 브랜치를 만들어보자.
작성 순서는 git branch '생성할 브랜치 명' '기준 브랜치 명'
이고
기준 브랜치 명
은 생략 가능하다.
$ git branch bonnie main $ git branch bonnie * main
bonnie 브랜치가 추가되었다. 하지만 여전히 지정되어 있는 것(* 표시가 있는 것)은 main이다.
새로 만든 브랜치로 이동하는 것을 체크아웃(checkout
)이라고 표현한다.
작성순서는 git checkout '생성한 브랜치 명'
$ git checkout bonnie $ git branch * bonnie main
브랜치가 변경되었다.
잠깐🙂
-b
옵션을 사용해 브랜치를 만들면서 체크아웃을 할 수도 있다.🤗
작성순서 :git checkout -b '생성할 브랜치 명'
브랜치한 파일에서 작업이 끝나고 add와 commit 까지 한 후, 다시 기존파일에서 브랜치하여 작업한 파일과 합쳐야 하는데 이것을 병합(merge
)이라고 한다.
main파일인 main 브랜치로 돌아간 뒤(이동)
git checkout main
작성순서 : git merge '작업한 브랜치 명'
$ git merge bonnie Updating 34dfe5e..f58626d Fast-forward index.html | 2 ++ 1 file changed, 2 insertions(+)
merge 완료!
나머지 git 명령어들은 2탄에서 만나요😁