본문 바로가기

DEV/Git

Git 사용법

브랜치 생성
cd /workspace/project1    
git log --oneline         #커밋 로그 보기
git branch                  #현재 브랜치 확인
git branch project1    #새로운 브랜치 생성
git branch                  #현재 브랜치 확인
git log --oneline --all  #변경된 브랜치 확인

브랜치 체크아웃
git checkout project1  #브랜치 체크아웃
git branch                   #현재 브랜치 확인

빨리감기(fast-forward)병합
git status                                   #파일 변경후 스테이지 확인
git add file1.java                       #스테이지에 추가
git commit                                 #커밋 추가
git log --oneline --all --graph     #커밋 로그 보기
git checkout master                  #마스터 브랜치 체크아웃
cat file1.java                             #파일이 이전으로 돌아갔는지 확인
git merge project1                    #병합
git log --oneline --all --graph    #로그확인
cat file1.java                            #파일 재확인

리셋
git reset --hard <이동할 커밋 체크섬>
git reset --hard HEAD~2         #브랜치 되돌리기

HEAD~2 두 번째 부모 커밋을 가리킨다
HEAD^2 두 번째 부모를 가리킨다(병합 커밋처럼 부모가 둘 이상인경우 사용)

리베이스1)
git checkout project1               #브랜치 체크아웃
git rebase master
git log --oneline --all                #project1은 master위에 있기 때문에 변한게 없다
git checkout master
git rebase project1                  #반대 방향에서 rebase
git log --oneline --all                #변경 사항을 확인해 보면 빨리 감기 병합이 됬다
git push
git branch -d project1              #브랜치 삭제
git log --oneline --all --graph   #로그확인

리베이스2)
1. HEAD와 대상 브랜치의 공통 조상을 찾는다
2. 공통 조상 이후에 생성한 커밋들을 대상 브랜치 뒤로 재배치
git checkout feature1
git reset --hard HEAD~           #현재 브랜치를 한단계 되돌린다(병합커밋 사라짐)
git log --oneline --all --graph
git rebase master                   #HEAD 브랜치의 커밋들을 master로 재배치
git push
에러발생시
git status #충돌 대상 확인 및 수동으로 충돌 해결
git add file1.java
git status
git rebase --continue #리베이스 계속 진행(리베이스는 commit아님)
git log --oneline --graph --all n2
git checkout master
git merge feature1

리베이스3)
git reset --hard HEAD~
git rebase origin/master          #로컬 master브랜치의 가지 커밋이 origin/master브랜치 위로 재배치
git log --oneline --all --graph n3
git push

태그
git tag -a -m <메세지> <태그이름> [브랜치 or 체크섬] 브랜치를 생략하면 HEAD에 태그를 생성
git push <원격저장소 별명> <태그이름> 원격 저장소에 태그를 업로드

git log --oneline
git tag -a -m "태그생성" v0.1 #주석 있는 태그 작성
git log --oneline
git push origin v0.1 #태그 푸시

3-way병합
git checkout feature1
git log --oneline --all
git merge master #마스터와 병합 시도
git status #병합 실패 원인 확인 (git merge --abort #병합취소)
<<<<<< HEAD (현재변경사항)
aaaa
======
2222
>>>>>> master (수신변경사항)
git add file1.java
git status
git commit
git log --oneline --all --graph

'DEV > Git' 카테고리의 다른 글

Git CLI 정리  (0) 2022.12.28
Git 파일 제외  (0) 2021.01.12
GitHub Desktop 사용법  (0) 2020.09.07
Remote Repository 다른 사용자 초대 및 Clone  (0) 2020.08.31
GitHub Repository 생성  (0) 2020.08.31