# Git내려받기
git clone "Git URL"
# 도움말
git --help
# 브랜치 보기
git branch
# 다른 브랜치로 이동
git checkout 브랜치명
# 새로운 브랜치 만들기
git checkout -b 브랜치명
# 현재 변경사항 추가하기
git add .
# 추가한 변경사항 커밋하기
git commit -m "커밋명"
커밋
git에 add하기 전의 변경내용 취소
# 파일 한개만 원래 버젼으로 되돌리기
git checkout <file_name>
# 변경된 내용 전부를 원래버젼으로 되돌리기
git checkout --hard
변경내용 전부 적용
git add -A
git add 한거 취소
git reset 파일명
커밋하기
git commit -m "커밋메세지"
브랜치
원격에 새로운 브랜치를 생성해서 그 안에 현재 커밋 푸쉬하기
git push origin 브랜치명
커밋한거 원격 저장소로 푸시
git push -u origin 브랜치명
원격 저장소에 있던 브랜치 로컬로 내려받기
# 이걸 먼저 해야 다음 명령어 가능
git fetch origin 브랜치명
git checkout -t origin/브랜치명
git branch 로컬브랜치명 origin/브랜치명
git checkout -b 로컬브랜치명 origin/브랜치명
브랜치삭제 (적용 안된 내용이 있으면 삭제가 안됨)
git branch -d 브랜치명
브랜치 강제삭제 (적용안된 내용이 있어도 무조건 삭제됨)
git branch -D 브랜치명
브랜치이름 바꾸기
git branch -m 원래브랜치명 새브랜치명
원격에 있는 브랜치를 로컬에 있는 브랜치로 갈아 엎고 싶을때
주의! 원격에 있는 내용 다 날아감!!
git push --force-with-lease
Base브랜치 변경
git checkout 베이스를바꾸고자하는브랜치
git rebase --onto 새베이스브랜치 현재베이스브랜치
Git tag
# tagging하기
git tag tagname
# tag보기
git tag -1
# tag서버에 올리기
git push origin --tags
# 로컬에 생성한 tag삭제하기
git tag -d tagname
# 이미 서버에 올려버린 tag삭제하기
git push --delete origin 2020-08-25-18-11-35-bbd7d82.rc1
로그
커밋 히스토리 보기
git log
각 브랜치 그림으로 보기
git log --graph --oneline --decorate
커밋한 사람 이름으로 필터링하기
git log --author="Sungok Lim"
Diff Patch
변경된 부분을 하나로 통합하여 새로운 브랜치에 적용하기
# Root폴더에서 실행
cd ~/git/repo
# 다른 코드를 임시 파일에 저장
git diff master mybranch > /tmp/diff.patch
# 새로운 브랜치 생성
git checkout master
git checkout -b newbranch
# Patch 테스트
patch --dry-run -p1 < /tmp/diff.patch
# Patch 실행
patch -p1 < /tmp/diff.patch
# 변경된 내용 확인
git diff
# 변경된 내용 추가
git add .
# 통합 커밋
git commit -m 'My changes'
Cherry Pick
Cherry Pick for Hot Fix! 다른 브랜치에서 특정 커밋만 가져오기
# Cherry Pick을 해서 커밋을 가져오고자 하는 최종목적지 브랜치로 이동한다.
# 보통 Cherry Pick은 Hot Fix에 주로 사용되므로 master에서 실행하겠다.
> git checkout master
# 커밋 히스토리 보기
# --all 옵션을 주어서 다른 브랜치의 로그도 모두 볼수 있도록 한다
> git log --all
commit 5af9a2f979233799d3459fa032632da19561fe7b (HEAD -> myBranch)
Author: Amugae Kijm <akim@company.com>
Date: Tue May 3 12:42:59 2020 -0400
Fixing the bug on the new feature
# 다른 브랜치에서 가져올 커밋번호를 찾았다면
# 해당 커밋번호로 Cherry Pick을 실행한다.
> git cherry-pick 5af9a2f979233799d3459fa032632da19561fe7b
# 로그에서 결과확인
> git log
commit 43196b929e55dafc7352c7b7c7603a22e4122dd9 (HEAD -> master)
Author: Amugae Kijm <akim@company.com>
Date: Tue May 5 12:42:59 2020 -0400
Fixing the bug on the new feature
master의 최종 로그에서 보시면요, 가져온 commit의 고유번호가 달라져있는 것을 확인하실수 있으실거에요. 이처럼 Cherry Pick은 실제 커밋을 가져오는게 아니라 해당커밋의 변경된 내용을 가져와서 새로운 commit을 만드는것이기 때문에 나중에 커밋이 중복될수 있다는거 명심하세요.
Fetch an unmerged Pull Request
git fetch origin pull/34/head:34
git checkout 34