2022 OSAM 해커톤 사전 온라인 교육에서 배운 내용입니다.
모르는 내용만 발췌하여 정리한 것이기 때문에 내용의 연결성이 부족한 점 양해 부탁드립니다.
git init
git status
git add .
git commit -m "commit msg"
git branch -m main # 현 브랜치의 이름을 main으로 변경
git remote add origin https://github.com/yoopark/test.git
git push -u origin main # 앞으로는 git push만 해도 git push origin main 됨
Username: yoopark
Password: [Personal access token]
git branch issue1
git checkout issue1
git branch -v # branch 종류 확인
git checkout issue1
# 열심히 기능 추가
git add .
git commit -m "Revise: README"
# Github(원격 저장소)에도 issue1 이름의 브랜치를 만들어야 함.
git push origin issue1
# 원 브랜치와 곁 브랜치 모두 변경사항이 커밋 완료되어있어야 함.
# main <- issue1
git checkout main
git merge issue1
Auto-merge(3-way merge)를 수행한다.
하지만 Conflict가 발생하면, 아래 파일처럼 나타난다.
# HELLO WORLD!
<<<<<<< HEAD
Think Different!
=======
Long time no see~
>>>>>>> issue1
일일이 올바르게 수정해주고 커밋하도록 하자.
git log --graph --oneline
💡 이 상황이 오고야 말았다. 당황한 나머지
git reset --hard
을 무작정 저지르고git push -f
로 Github까지 망쳐놓는다면… 적어도 이런 바보짓은 하지 말아야 한다.git reset
은 되돌렸다는 커밋도 안 남긴 채로 과거로 돌아가는 것이기 때문에, 특히 팀 개발에서 매우 위험하다.
git reset --soft [commit id]
git reset --mixed [commit id]
git reset --hard [commit id]
git reset HEAD~10
git reset HEAD^
A→B→C→D 순으로 커밋이 된 상황(HEAD = D)에서
만약 B 상황으로 되돌리고 싶을 때, 바로 B로 revert하면 안 된다.
git revert
는 해당 커밋에서 변화시킨 일만 되돌리기 때문에,
git revert HEAD
를 3번 실행하여 되돌아가는 것이 적절하다.
💡
git reset
은 어떤 커밋으로 되돌아가고 싶은지를 말하기 때문에HEAD^
를 사용하지만,
git revert
는 어떤 커밋에서 되돌아가고 싶은지를 말하기 때문에HEAD
를 사용한다.
git revert --no-edit
을 쓰면 커밋 메시지를 따로 수정하지 않아도 된다.ESC
+ :wq
로 꺼주도록 하자.