초기작업
사용자 정보 생성하기
git config --global user.name "Firstname Lastname"
git config --global user.email "your_email@example.com"
vi ~/.gitconfig
계정 SSH Key 생성하기
ssh-keygen -t rsa -C "[이메일]"
새로운 저장소 만들기
폴더를 만든 후
git init
저장소 받아오기
원격저장소를 로컬로 가져오기
git clone git@github.com:JaewoongMoon/[Git저장소이름]
ssk key 가 있어야 하는 위치
~/.ssh
버추얼 머신에는 저 폴더를 통째로 복사해두면 된다.
작업의 흐름
로컬브랜치는 3개의 나무로 구성
1) 작업 디렉터리 (Working Directory) 또는 Working Tree
실제 파일들
2) 인덱스 (Index)
준비영역 (Staging area)
3) 헤드 (HEAD)
최종확정본(Commit)
추가와 확정
변경된파일 추가하기
개념 : WorkingTree에 있던 파일을 인덱스에 추가
git add [파일경로/파일명]
변경된 파일을 확정하기
개념 : Index에 있던 파일을 HEAD에 반영
git commit -m "커밋 메세지"
버전 컨트롤에서 제외하기 ex) class 파일
git rm --dry-run *.class
제외될 파일 리스트 확인
git rm *.class
버전컨트롤에서 제외하기 (하드디스크에서도 지우기)
git rm [path]
저장소에는 삭제되지만 작업 공간에는 삭제되지 않도록
git rm --cached [path]
저장소, 작업공간에는 삭제되지 않지만 변경을 추적하지 않도록
git update-index --assume-unchanged [path]
변경내용발행(push)하기
개념 : 로컬저장소를 원격저장소에 push 하기
git push origin [브랜치명]
차분만 올릴경우 (거의 이쪽을 많이 쓴다.)
git push -u origin [브랜치명]
로컬 변경사항 취소하기 (가장 마지막의 커밋상태로 되돌리기)
git reset --hard HEAD
커밋메세지 변경
git commit --amend
꼬리표(tag) 달기
git tag 1.0.0 1b2e1d63ff
가지(branch)치기
브랜치로 이동하기
git checkout [브랜치명]
브랜치를 만들면서 새로 만든 브랜치로 이동하기
git checkout -b [브랜치명]
브랜치 수정사항 commit 후 원격 저장소에 push
git push –set-upstream origin [브랜치명]
브랜치 목록보기
git branch -a
브랜치 삭제하기
git branch -d [브랜치명]
수정된 파일과 내용을 확인하기
git diff
git diff [원래가지] [비교 대상 가지]
갱신과 병합(merge)
개념 : 로컬저장소를 원격저장소에 맞춰 갱신
원격저장소의 변경 내용이 로컬 작업 디렉토리에 받아지고(fetch), 병합(merge)된다.
원격 master를 현재가지에 병합
git pull
원격의 특정 브랜치를 현재가지에 병합
git fetch
git merge [브랜치명]
현재의 로컬 master브랜치에 feature브랜치 병합
git checkout master
git merge --no-ff [브랜치명]
충돌해결
1. 로컬에서 병합을 시도한다. (충돌상태가 되도록)
git fetch
git merge master
2. 충돌이 발생한 파일을 열어보면 충돌영역이 표시되어 있다. 수동으로 충돌을 처리한다.
3. 충돌이 발생한 로컬 브랜치에서 커밋한다.
git commit -am "Fix conflict"
4. 로컬 마스터 브랜치에 로컬브랜치 내용을 병합한다.
git checkout master
git merge --no-ff [충돌을 해결한 브랜치명]
5. 원격 저장소 마스터 브랜치에 발행한다.
git push origin master
git 관리대상에 제외하기
git rm [파일명]
원격저장소 관련
원격 저장소 주소가 ssh 주소로 되어있지 않으면 푸쉬할 때마다 인증정보를 물어본다!!
원격 저장소 주소 확인
git remote -v
원격 저장소 주소 변경
git remote set-url origin [변경될 주소]
리모트 브랜치 삭제
git push origin :[브랜치명]
리모트 브랜치 상황 보기
git remote show origin
원격저장소에서 삭제된 브랜치를 로컬저장소에 동기화하기
git remote prune origin #이 커맨드가 먹히지 않는다면 아래의 커맨드를 수행한다.
git branch --merged master | grep -v '^[ *]*master$' | xargs git branch -d
상태/로그
Git 상태보기
git status
로그확인
-p
는 patch의 약자다.
git log
git log -p 숫자
git log -p 커밋ID
커밋메세지로 검색
git log --grep=키워드
특정 기간의 로그 확인
git log --since=2008-01-15 --until=2023-11-15
git log --since=2022-10-01 --until=2023-11-01 --pretty=oneline
특정 커밋 시점의 로그 확인
git reset --hard [COMMIT_ID]
로그의 차분을 확인하고 싶을 때
git log --pretty=short
git log --graph
현재의 수정사항과 과거의 로그 모두 확인
git reflog
실행 로그 자세히 보기 (트러블슈팅시에 유용)
~GIT_CURL_VERBOSE=1 GIT_TRACE=1~ 을 앞에 붙이고 실행한다.
GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull origin master
설정 관련
설정(config) 정보 보기
git config --list
설정 정보 삭제
git config --global --unset [설정명]
유저 설정 관련 (복수의 유저로 운용할 때)
git config --list
로 현재 설정된 유저를 확인한다.- user.email, user.name 등을 보면된다.
- 만약 유저를 변경하고 싶으면 아래 커맨드를 사용
git config --global user.name "Firstname Lastname" git config --global user.email "your_email@example.com"