# Basic GIT Commands for Everyday Use
git init
# 리포지토리 초기화. '.git'폴더 생성. 이 폴더에 현재 폴더와 관련된 관리 정보가 저장. working tree라고 부른다. 변경 내역 등 관리.
git status
# 리포지토리 상태 표시.
git add 파일명
# 스테이지 영역(커밋 전 임시 영역)에 파일 추가.
git commit -m '첫 커밋'
# 스테이지 영역에 기록된 시점들 파일을 실제 리포지토리 변경 내역에 반영.
git log
# 리포지토리에 커밋된 로그 확인.
git log --pretty=short
# 로그 확인시 첫 번째 요약 줄만 보여주기
git log README.md
# 리드미 관련된 로그만 보기 (폴더 명도 가능)
git log -p
# 커밋에서 변경된 내용 함께 확인. (뒤에 파일/폴더명 붙여도 됨)
git diff
# working tree, 스테이지 영역, 최신 커밋 사이 변경 확인
git diff HEAD
# 최신 commit과의 차이 확인
git branch
# 브랜치 목록 표시, 현재 어떤 브랜치인지.
git checkout -b 'feature-A'
# feature-A 이름의 브랜치 만들고 그 브랜치로 이동
git merge --no--ff feature-A
# 현재 브랜치에서 feature-A브랜치를 머지. 옵션은 머지 커밋도 함께 남기고 싶다는 뜻.
git log --graph
# 브랜치를 시각적으로 확인
git reset --hard 커밋해시값
# HEAD, 스테이지, Working tree를 특정 커밋으로 복원.
git reset HEAD^
git reset HEAD~2
# 2개 커밋 되돌리기
git push origin +master
# +를 붙여주면 정보 손실 있어도 무시하고 푸쉬한다.
git reflog
# 현재 브랜치 뿐만이 아니라 이 리포지토리에서 진행된 모든 로그 볼 수 있음
git commit --amend
# 바로 전에 작성했던 커밋 메세지 수정
git commit -am "바로 애드하고 커밋하고 싶당"
# add, commit 한번에 하기
> git rebase -i HEAD~2
pick 7a34294 Add feature-C
pick 6fsdfa2 Fix typo
# 현재 브랜치의 HEAD(최신 commit)를 포함한 두 개의 변경 내역과 관련된 내용 보여짐. 이 두개를 합쳐 한 커밋으로 뭉개버리고 싶다. fix typo가 부끄러우니까!
pick 7a34294 Add feature-C
fixup 6fsdfa2 Fix typo
# 뭉개고 싶은 커밋에 'fixup'으로 고쳐주고 저장.
git remote add origin git@github.com:사용자명/저장소이름.git
# 주소의 저장소를 원격 저장소로 설정
git push -u origin master
# -u옵션: 로컬 리포에 있는 현재 브랜치 upstream이 origin 리포의 master 브랜치로 설정.
git push -u origin feature-D
# 원격의 feature-D브랜치로 push
git clone git@github....git
# 주소의 리포지토리 받아오기
git branch -a
# 로컬 리포지토리랑 원격 리포지토리 브랜치 모두 표시
git checkout -b feature-D origin/feature-D
# 원격의 feature-D리포를 내가 새로 만든 feature-D브랜치로 체크아웃