1. Docker 란 무엇인가?
Docker는 개발자와 시스템 관리자가 컨테이너를 사용하여
응용 프로그램을 개발, 배포 및 실행하기위한 플랫폼입니다.
1. Docker 란 무엇인가? :컨테이너
:컨테이너 기존 리눅스에 있는 기술로 OS를 공유해서
(kernel of the host machine with other containers)
2.1 Git 저장소 만들기
1. 로컬
working Dir -> git init
2. 클론
git clone <url> ssh or https
프로젝트 +히스토리까지 받아오고 자동으로 최신 버전으로 checkout
2.2 수정하고 저장소에 저장하기
1. Tracked (관리대상)
이미 snap샷에 포함되어 있던 파일
- UnModified
- Modified
2. UnTracked (관리대상 아님)
git clone <url> ssh or https
2.2 수정하고 저장소에 저장하기
git status : 파일의 상태 확인
2.2 수정하고 저장소에 저장하기
WHY???
2.2 수정하고 저장소에 저장하기 Status & add
2.2 수정하고 저장소에 저장하기 Status & add
git status : 파일의 상태 확인
git add <파일> | <경로> stageArea에 올리기
git rm --cached <파일> staged에 올라간 파일 다시 내리기
2.2 수정하고 저장소에 저장하기 Status & add
git rm --cached <파일> | git checkout <파일>
stage-> unstage
Add 한 파일을 다시 수정하는 경우
git status --short | -s 로 상태값만 빠르게 확인 가능
2.2 수정하고 저장소에 저장하기 gitgnore
아무것도 없는 라인이나, `#`로 시작하는 라인은 무시한다.
표준 Glob 패턴을 사용한다. 이는 프로젝트 전체에 적용된다.
슬래시(/)로 시작하면 하위 디렉토리에 적용되지(Recursivity) 않는다.
디렉토리는 슬래시(/)를 끝에 사용하는 것으로 표현한다.
느낌표(!)로 시작하는 패턴의 파일은 무시하지 않는다.
2.2 수정하고 저장소에 저장하기
최상위에 하나 두고 관리
하위 프로젝트마다 또 두면서 관리
2.2 Staged와 Unstaged 상태의 변경 내용을 보기
git diff : 최신 커밋 기준으로 staged 아닌 파일 비교
git diff --staged : 최신 커밋 기준으로 staged 상태파일과 비교
--cached , --staged 같은 옵션이다
diff vs status
변경 여부 - status | diff - 어떻게 변했는지
2.2 변경사항 커밋하기
add 상자에 담기
commit : 상자 포장
git commit
git commit -v (+diff message)
git commit -m message 바로 작성
git log ->
commit -> checksum
author date
2.2 변경사항 커밋하기
git add . + -> git commit -a 옵션을 사용하면
tracked 상태의 파일 자동으로 add 한다.
wd 에서 파일 삭제하게 되면
Changes not staged for commit (unstaged)
git rm -> staged
Question add 를 하는 거랑 무슨 차이인지?.?
*실수로 .gitignore에 추가하지 않았을 때
git rm --cached README
git rm log/\*.log
2.2 변경사항 커밋하기
파일 이름 변경하기
git mv
파일 이름 수정 -> rm -> add 하는 것을 한 꺼번에 할 수 있다.
$ mv README.md README
$ git rm README.md
$ git add README
2.3 커밋 히스토리 조회 하기
git log
각 커밋의 체크섬 (브랜치, 헤드 정보)
author
date
message
git log -p | --path 각 커밋의 diff 결과를 보여준다
git log --stat 각 커밋의 통계정보를 조회 할 수 있다.
git log --pretty=oneline git log --pretty=format:"%h %s" --graph
git log --since=2.weeks
git log -S function_name
2.4 되돌리기
git commit --amend 이전 커밋이랑 덮어서 다시 기록
친절하게 git status 창에 되돌리는 부분이잘 나온다.
이전 커밋 덮어서 다시 쓰기
파일 상태를 Unstage로 변경하기
주의 : 최근 커밋이 내가 작업한 커밋인지, 혹은 push를 이미 했는지 확인하고 하기
git reset HEAD <file>
아마도 이전 head 상태로 돌아가라는 것 같아서 add 파일 되돌리는 것 같은데 -ㅂ- 자세한 것은 7장에서
2.4 되돌리기
*git reset HEAD --hard는 working Dir를 건드림으로 (되돌리기 힘듬..reflog로 되돌릴 수는 있지만)
그래서 옵션 없이 사용을 권장
파일 되돌리기
checkout
개인적으로는 수정된 파일 부분만 add 하고 나머지
다시 git checkout .를 많이 사용하는 편입니다.
잠깐 어디다 저장해야 될 때는 branch를 만들어나 stash를 권장
모두 커밋이 save Point임을 다시 한 번 상기
2.5 Remote repo
git remote -v (url) 권한이 같이 나온다.
clone 해온 repo로 확인해보자
git remote add <url>
원격 저장소 추가
git fetch <remote> remote 에 있는 내용 가지고 오기 fetch로 sync를 맞춰줘야 merge 및 브랜치 이동 최신으로 가능
... git fetch 무슨 역할인지 잘 모르겠어요 살펴봤는데
2.5 Remote repo
Git Pull git fetch + merge
git pull <remoteName> <브랜치>
<remoteName> <브랜치>를 작업 브랜치로 가지고 와서 merge 시킴
push
git push remote저장소 이름 브랜치 이름
git remote show name
git remote rename | remove
2.6 Git Tag
1.git Tag 명령어로 확인 git tag | git tag -l
tag 나, tag -l 그냥 태그 목록들 조회는 같다.
git tag -l "v1.8.5*" 와일드카드로 검색을 할 때 쓴다.
Tag 종류
1. LightWeight : 특정 커밋에 대한 포인터
2. Annotated
: author, email, created_at , message등 여러 정보들도 저장한다.
annotated를 권장
2.6 Git Tag
1.git Tag 명령어로 확인 git tag | git tag -l
tag 나, tag -l 그냥 태그 목록들 조회는 같다.
git tag -l "v1.8.5*" 와일드카드로 검색을 할 때 쓴다.
Tag 종류
1. LightWeight : 특정 커밋에 대한 포인터
2. Annotated
: author, email, created_at , message등 여러 정보들도 저장한다.
annotated를 권장
2.6 Git Tag
Tag 만들기
$ git tag -a v1.4 -m "my version 1.4"
$ git tag
v0.1
v1.3
v1.4
git show로 author, 커밋내용 ...등을 확인 할 수 있다.
git tag v1.4-lw
$ git tag
2.6 Git Tag
나중에 커밋에 tag붙여주기
git log --pretty=oneline
git tag -a v1.2 <checksum>
태그 공유하기
git push origin <tag이름>
한 꺼번에 전송하기 git push origin --tags
Checkout
tag로 바로 checkout 하면 detached Head 상태가 되기 때문에
아래와 같이 브랜치를 만들어서 작업 권장
git checkout -b version2 v2.0.0
2.7 Gig Alias
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
자주 쓰는 명령어들을 줄여서 쉽게 만들어 놓자
git config --global alias.unstage 'rm --cached '
git config --global alias.last 'log -1 HEAD'
git config --global alias.visual '!gitk' ?