Git 2.basic :D

2.1 Git 저장소 만들기 

1. 저장소 만들고 설정

init, clone,

2. 파일 추적 및 무시

log , reflog, .gitignore

3. 변경 내용을 Stage 하고 커밋하는 방법

StageArea, 커밋 add , commit , diff

4. 실수를 쉽고 빠르게  만회 하는 방법

reset, checkout, stash

5. Remote 저장소와 주고받기

push, pull origin, upstream

2.1 Git 저장소 만들기 

1. 로컬

working Dir -> git init   

<git의 내부>

2. 클론

git clone <url>  ssh or https

 

<서버에 git 설치하기>

 

 프로젝트 +히스토리까지 받아오고 자동으로 최신 버전으로 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' ?
Made with Slides.com