GIT - 자주쓰는 명령어
[초기설정]
git init
git add .
git commit -m 'init'
github에서 프로젝트 생성
git remote add origin https://github.yoururl.000.git
git push --set-upstream origin master
[ git remote ]
git remote
- git 원격저장소[Repository] 목록 확인
git remote -v
- git 원격저장소 이름과 url 목록 확인
git remote add 저장소이름 저장소URL
- 저장소URL의 원격저장소를 저장소이름으로 추가
git remote remove 저장소이름
- 저장소이름의 원격저장소 제거
[ git log / git status / git diff ]
git log
- commit 로그 확인
git log --pretty=format:"%h %s" --graph
- commit 로그 graph 확인
git status
- 파일 상태 확인(staged, untracked, ..)
git diff
- commit된 파일상태와 현재 수정중인 상태 비교
git diff --staged
- commit된 파일상태와 add된 파일 상태 비교
[ git add / git commit ]
git add 파일명1 파일명2
- 해당 파일을 [Staging Area]로 이동(tracking)
git commit -m "커밋메세지"
- editor 호출없이 바로 커밋
git commit --amend
- 커밋된 메세지 수정
[ git push / git pull ]
git push
- 원격저장소[Repository]에 local repository[Working Directory]의 commit 내용을 올림
git pull
- 원격저장소[Repository]의 내용을 가져와서(fetch) local repository[Working Directory]에 합침(merge)
[ git branch ]
git branch <브랜치 이름>
- 브런치생성
git checkout <브랜치 이름>
- 사용할 브런치로 변경
git branch -r (-a는 로컬원격전부 확인)
- 원격브런치 목록확인
git push origin <브랜치 이름>
- 로컬브런치를 원격브런치로 추가
git branch --set-upstream-to origin/<브랜치 이름>
- 로컬브런치와 원격브런치 연동
git branch -d <브랜치 이름>
- 브런치 삭제
git push origin --delete <브랜치 이름>
- 원격저장소 브런치 삭제
git checkout -b test origin/test
- 원격 브런치 로컬브런치로 결합
[ git branch merge ]
git checkout master
- master사용
git branch -a
- checkout 바뀌었는지 확인
git merge <브런치 이름>
- 병합
git push
- 원격저장소에 병합할 경우
[ git conflict ]
- git 충돌시 아래의 rebase 옵션으로 merge
git config pull.rebase false
git pull
- git pull 시 merge 방식을 사용
- 병합 커밋이 생성되며, 로컬과 원격 브랜치의 커밋 기록이 병합 이력과 함께 남음
- 병합 이력을 명확히 남기고 싶거나, 기존 작업 기록을 그대로 유지하고 싶을 때 사용
git config pull.rebase true
git pull
- git pull 시 rebase 방식을 사용
- 로컬 브랜치의 커밋들이 원격 브랜치의 커밋 뒤에 이어집
- 깔끔한 커밋 히스토리를 유지하고 싶을 때 사용
[ git reset ]
git reset --hard A
git push -f origin B
- B브랜치 내용을 로컬 브런치의 A커밋의 내용으로 덮어쓴다
git reset --soft COMMIT_ID
- HEAD가 COMMIT_ID로 이동하지만, 변경된 파일들은 그대로 로컬(인덱스)에 남아있다
git reset --hard COMMIT_ID
git push --force
- HEAD가 COMMIT_ID로 이동하며, 작업 디렉터리의 파일과 인덱스가 모두 COMMIT_ID 시점으로 되돌아간다
[ git tag ]
git tag [태그이름]
git tag v1.0.5 030cc02ccc # 이전태그에 붙힐 때
git push origin [태그이름]
git push origin --delete [태그이름]
git checkout [tag name]
[ git stash ]
git stash
- 하던 작업 임시로 저장
git stash list
- stash 목록 확인
git stash apply [stash 이름]
- stash 적용
git stash pop
- 적용과 동시에 stash 에서 제거 (apply + drop)
[ git cherry-pick ]
- master branch에 develop branch 의 특정revision만을 적용할 때 사용
git checkout master
git cherry-pick 345345fccc (develop의 적용한 revision)
- 여러개의 revision 적용
git cherry-pick 555f8b4^..480b6bb
[ git patch (특정파일만 병합) ]
- 현재 브랜치가 A 일 때, B브런치의 a.js 파일의 변경사항을 가져옴
git checkout -p B a.js