일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- ajax
- reactive
- AWS
- 네트워크
- NoSQL
- r
- effective
- Static
- VCS
- reactor
- html
- Linux
- mybatis
- socket
- HTTP
- cache
- 데이터통신
- libuv
- git
- spring
- github
- javascript
- Elk
- network
- mongodb
- Heap
- Lombok
- redis
- nodejs
- Java
- Today
- Total
빨간색코딩
GIT의 기본 명령어 본문
1. Git같은 버전관리시스템이 나오게 된 배경
- 파일이나 폴더를 편집할 때 작업을하면서 아래 사진처럼 번잡하게한다.
- 만약 여러명이 공유한 파일을 편집한다면 저장할때 동기화문제가 있다.
- 이와같은 문제를 해결하기위해 git이 탄생.
2. git을 이용한 버전관리
- 소스 코드가 변경된 이력을 쉽게 확인 가능
- 특정 시점에 저장된 버전으로 되돌아 갈 수 있다.
- 동시저장할때 누군가 편집한 내용과 충돌한다면, 경고메시지 발생. 내용덮어쓰는 실수가 없다.
- 매번 백업용 파일 복사본을 만들 필요가 없다.
3. 초기설정: ~/.gitconfig 에 저장된다
git config --global user.name 자신의 닉네임
git config --global user.email 자신의 이메일
4. 명령어 도움말 보는법(레퍼런스, 메뉴얼)
git 명령어 --help
5. 기본 명령어
※ 버전=커밋ID
※ URL에는 원격저장소 뿐아니라 로컬저장소 경로도 포함될 수 있다.
git init
: 저장소 생성git init --bare
: 작업이 불가능하고 기능만 수행하는 저장소 생성(.git 내 파일만 존재)git clone URL
: 원격저장소에서 복제해서 저장소 생성git clone --depth 숫자 URL
: 최신 커밋을 숫자만큼만 복제해서 가져온다git add 파일
: git이 파일을 추적하도록 명령, 새로 생성되거나 변경된것 등git status
: git 저장소의 상태를 확인git commit
git commit -a
: 추적중인 변경된 모든 파일을 add한다(한번도 add안된건 X)git commit -m "메세지"
git commit --amend
: 바로 이전 커밋을 수정한다. index의 변화없이 쓸 경우 커밋메세지만 수정되고, index가 변화했을 경우 반영되서 커밋된다.git log
: 커밋된 로그 조회git log -p
: 로그에서 출력되는 버전 간의 차이점을 출력하고 싶을 때git diff 버전1..버전2
: 버전1과 버전2 간의 차이점을 비교할 때git diff
: git add하기 전(작업디렉터리)과 add한 후(index)의 파일 내용을 비교할 때git reset --soft 버전
: 저장소만 이전 버전으로 돌아감git reset --hard 버전
: 작업디렉터리까지 이전 버전으로 돌아감git revert 버전
: 버전의 커밋을 취소한 내용을 새로운 버전으로 만드는 명령git branch
: branch 목록보기, *있는게 현재 브랜치git branch 이름
: 이름으로 branch 생성git checkout 브랜치명
: 현재 브랜치에서 브랜치명으로 이동git checkout 버전
: 현재 브랜치에서 특정 버전으로 직접 이동git branch -d 브랜치명
: 브랜치명 삭제git branch -D 브랜치명
: 브랜치명 강제삭제git branch -b 브랜치명
: 브랜치만들고 바로 checkoutgit branch -m 브랜치명A 브랜치명B
: 브랜치명을 A에서 B로 바꾼다git log --branches(모든 브랜치를 보여준다) --decorate --graph(라인으로 표시) --oneline(커밋한줄로 표현)
git log 브랜치1..브랜치2
: 브랜치1에는 없고 브랜치2에는 있는 것을 비교해서 보여준다git diff 브랜치1..브랜치2
: 브랜치간 차이점 비교git merge B브랜치
: 현재 브랜치에서 B브랜치를 불러와서 병합한다.git rebase B브랜치
: 현재 브랜치의 조상(base)을 B브랜치의 최신 커밋(rebase)으로 바꾸고, 파생된 커밋객체들과 B브랜치의 최신 커밋과 순서대로 병합해나간다. merge와 결과가 같지만 log에서 분기가 사라지고 일렬로 나온다.git rebase --continue
: rebase도중에 충돌이 났을 경우, 해결 후 마저 병합할때 쓴다.git stash
: 추적등록된(add 한번이상) 작업중인 변경사항들을 다른 곳에 저장해둔다.git stash apply
: 저장된 stash를 작업디렉터리에 불러온다git stash list
: 저장된 stash 리스트를 출력한다. {0}이 제일 최신, git reset을해도 stash 리스트는 지워지지 않는다.git stash drop
: {0} 최신 리스트 1개를 삭제한다.git stash pop
: apply하고 drop을 한다.git reflog
: HEAD의 변경이력(commit, reset 등)을 본다. {0}이 제일 최신
※ 원격저장소명엔 주로 오리지널(기본)이란 의미로 origin 를 많이 쓴다.
git remote
: 원격저장소명을 출력git remote -v
: 원격저장소명과 URL을 출력git remote add 원격저장소명 URL
: 원격저장소 목록에 URL을 원격저장소명으로 저장한다. 이후부터는 원격저장소명만 쓰면 된다.git remote remove 원격저장소명
: 원격저장소명을 삭제git push -u 원격저장소명 브랜치명
(ex. git push -u origin master) : 원격저장소명이 가리키는 원격저장소로 최신 커밋상태를 업로드한다. -u 원격저장소명 브랜치명 를 쓰면, 로컬 브랜치와 원격 브랜치가 연결된다. 이후부터는 git push만 간단히 써도 push된다.git push --tags
: 로컬저장소의 태그들을 원격저장소로 업로드한다. github에서 releases탭이 활성화된다.git pull
: 원격저장소로부터 로컬저장소를 동기화하고 merge 한다git fetch
: 원격저장소로부터 로컬저장소를 동기화하지만 merge를 하지 않음git fetch --prune
: 원격 저장소에 더 이상 존재하지 않는 브랜치들에 해당하는 ref 들을 삭제git log --branches --not --remotes
: 푸쉬하지 않은 커밋의 수git tag
: 태그목록을 출력git tag 태그명
: 현재 브랜치가 가리키는 커밋객체로 태그명을 갖는 태그를 만든다git tag 태그명 브랜치명or버전
: 브랜치가 가리키는 커밋객체 or 커밋ID로 태그명을 갖는 태그를 만든다 (light weight tag)git tag -d 태그명
: 태그를 삭제한다git tag -a 태그명 -m "메세지"
: 주석을 달수 있는 태그를 만든다 (annotated tag)git tag -v 태그명
: 태그의 자세한 정보(주석 포함)를 본다
'Git' 카테고리의 다른 글
git object 파헤치기 (1) | 2017.06.03 |
---|---|
github 이모티콘 (0) | 2017.05.01 |
git ignore 추적하지 않는 파일목록 관리 (0) | 2017.03.19 |
git으로 협업(브랜치, 충돌해결, pull request) (0) | 2017.03.19 |
git의 원리 (git object를 중심으로) (0) | 2017.03.19 |