김쨈창고
Git 공부 메모장 본문
Git 1일차
설치
git은 최신버전을 유지해주는것이 좋다.
windows는 git 업데이트는 재설치, mac은 homebrew를 통한 설치를 하면 명령어만으로 업데이트 가능
(gitk는 애플git에는 기능이 없어서 homebrew로 설치하는 것이 좋다.)
- $gitk - 현재 저장소의 트리구조를 확인할 수 있다.
- 명령어 입력창[Console Emulator] : 명령어나 원하는 폰트 설정이 가능하다.
사용자설정
- $git-config : 사용자설정 명령어
- $git-config--global user.name 이름
- $git-config--global user.email 이메일주소
- $git-config--list or $git config user.name / git config user.email : 내가 설정한 git 설정을 확인하는 명령어
사용자 설정 리스트로 자신에게 맞게 설정이 가능하다.
$git init
$git init 폴더명 : 폴더를 생성하고 git을 적용해 준다.
commit을 하면 버전관리가 시작된다.
Git 2일차
$git status
git저장소의 현 상태를 파악하는 명령어, 파일의 추가/삭제/수정 등의 정보를 알 수 있다.
내가 어느 브랜치에 있는 지에 대한 정보도 알 수 있다.
git 저장소에 추가
- $git add 파일명 - 하나의 파일만 추가
- $git add 파일명 파일명 파일명 - 여러개의 파일 추가, 띄어쓰기로 파일구분
- $git add . or $git add * - 폴더내의 add 안 된 파일을 한꺼번에 추가
add를 하면, Staging Area에 올리는 과정이다. 곧 커밋할 파일에 대한 정보 저장
추가한 파일을 삭제할 때(추가 전으로 되돌리려고 할 때) - $git rm --cashed 파일명
$git commit
- $git commit -m '커밋 메세지' or $git commit --message '커밋 메세지'
그냥 git commit만 입력 시 메세지창이 떠서 커밋메세지를 입력하고 :wq 로 종료해야한다.
싱글쿼터('')로 작성 시 커밋이 안되면 더블쿼터("")로 작성해서 커밋한다.
* -는 축약옵션. --는 축약된 것을 풀어서 쓴 것. ex) -a , --all or -m, --message
$git stash
- $git stash - 현재 상태를 캡쳐하여 임시공간에 저장하는 것
- $git stash pop - 캡쳐된 상태를 가져오는 것
파일무시하기
.gitignore 파일에 무시해야 할 파일 패턴을 적는다.
.* = .으로 시작하는 모든 것
$git diff 가장최신커밋(HEAD)..비교커밋 - 리비전 버전비교
- HEAD는 가장최신
- HEAD^ 최신이전
- HEAD~2 최신에서 두번째
* vi 에서 코드 옆에 번호 출력 set nu
$git diff --cached
현재 working directory랑 add된 거랑 비교
$git log
현재 내 저장소의 로그를 확인
$git log -p
Git 3일차
되돌리기
- $--amend - git 커밋전상태로 되돌아가는 것. push하기 이전에만 실행가능
- $git reset HEAD 파일명
add한 파일을 unstage 상태로 되돌리는 방법
commit 된 파일뿐만아니라 working directory에 있는 파일까지도 되돌릴 수 있다. - $git checkout --파일명 - add된 상태에서 수정(modify)됐을 때 checkout을 사용하면 되돌릴 수 있다.
git 브랜치
- 브랜치 생성 - $git branch 브랜치명
- 브랜치로 이동 - $git checout 브랜치명
- 브랜치생성해서 옮겨가기 - $git checkout -b 브랜치명
merge
$git merge 브랜치명
master로 파일을 모아야 하면 master로 이동한 후 merge가 되어야 한다.
- $git checkout 수정된 내용이 합쳐질 브랜치명
- $git merge 머지할 브랜치명
* fast-forward
merge의 종류가 fast-forward와 3-way-merge가 있는데 가장 많이 접하게 될 merge종류(progit 63page)
-
- $git branch -v : 마지막 커밋 메세지 보는 명령어
- $git branch --merged : 현재 checkout한 브랜치 기준으로 merge된 브랜치인지 아닌지 확인하는 명령어
- $git branch --no-merged : 현재 checkout한 브랜치 기준으로 merge되지 않은 브랜치를 확인하는 명령어
- $git branch -d 브랜치명 : 브랜치를 삭제하는 명령어. 삭제될 브랜치에서 checkout되어 있으면 안된다.
- $git branch -D 브랜치명 : merge되지 않은 정보가 있을 경우, -d로 삭제하면 삭제가 안되므로, 강제적으로 -D(대문자)를 사용하면 강제적으로 삭제된다.
git merge 충돌
충돌된 파일정보는 git status로 확인가능
파일 아이콘에 느낌표 뜨게하는 것은 totoise git을 설치해야한다.
기존과 관계없는 branch를 만들 수 있는 방법
$git checkout --orphan 브랜치명
etc폴더같은 느낌
기존에 있는 branch들과 연관성이 없이 따로 가지고 작업할 수 있다.
http://git-scm.com/docs/git-checkout/1.7.3.1
Git 4일차
git remote 저장소
$git clone url
git 저장소를 복사하고 싶을 때 사용하는 명령어
$git remote -v
git clone 한 주소를 확인하는 명령어
* git clone을 하면 origin이라는 별명으로 리모트 저장소가 자동으로 등록됨
$git remote --help
설명확인
$git remote add 단축이름 url
git remote 저장소를 추가
단축이름과 url은 기본 필수 요소이며, 단축이름으로 나중에 굳이 url을 다 입력하지 않고 단축이름만으로 적용가능
$git remote rm 단축이름
git remote 저장소 삭제
$git fetch 리모트 저장소 이름
로컬에는 없지만, 리모트 저장소에 있는 데이터를 모두 가져온다.
fetch명령은 리모트 저장소에 있는 데이터를 모두 로컬로 가져오지만 자동으로 merge하지는 않는다.
repository에 있는 상태이며, 필요에 따라 working directory로 merge한다.
$git merge origin/master : git fetch를 merge한다.
$git pull
리모트 저장소에 있는 데이터를 모두 가져오는 동시에 merge한다
* git fetch + merge = git pull
$git push 리모트저장소이름 브랜치이름
리모트저장소이름은 추가시 지정한 단축이름이나 주소를 치면된다.
프로젝트 작업시에는 해당 remote 서버에 멤버로 등록이 되어있어야 reject 안된다.
내가 가진 정보보다 서버쪽 정보가 최신일 경우, reject당할 수 있으며 이 경우 git fetch나 git pull로 최신정보를 업데이트하고 다시 push를 해준다.
내가 한번이라도 push를 했다면, 그 다음번부터는 자동으로 매칭되어 push 해준다.
$git remote show 리모트저장소이름
리모트저장소의 구체적인 정보를 확인할 수 있다. 항상 최신정보만 확인
삭제된 리모트 정보도 나온다
$git branch -r
git 저장소의 브랜치목록을 확인할 수 있다. 내가 가진 정보만을 토대로 확인
$git fetch --prune
다른사람이 remote서버에서 삭제하면 --prune 옵션으로 fetch 받을 시 내거에서도 삭제할 수 있다.
* 위험한 옵션이므로 사용안하는 것이 좋을듯..?!
$git push 리모트저장소 :삭제할브랜치
ex) git push origin :141014_branch- $git remote 저장소 브랜치 삭제하기
- $git push [리모트저장소] [로컬브랜치]:[리모트브랜치] 형식에서 로컬브랜치 부분을 비워둔 채 실행하면 "로컬에서 빈 내용을 리모트의 리모트브랜치에 채워넣어라"라는 뜻이 되어 빈 것은 삭제가 되는 것
'마크업 > Git' 카테고리의 다른 글
git bash에서 한글이 깨질 경우 (1) | 2018.03.07 |
---|---|
Git 사용하기 (0) | 2016.07.14 |
Git 명령어 (0) | 2015.06.10 |