1. git flow
파일 혹은 폴더를 생성한다.
git remote add origin url 을 이용하여 github와 연동한다
git add . : commit할 파일들 선택
git commit -m "commit 내용" : 변경 사항 local에 저장 및 요약 작성
git push origin main : github의 main branch로 push하기.
참고 : 만약 전에 있던 내용들이 있으면 git pull origin main, git clone (url주소)를 이용해야 할 것이다.
2. git branch
브랜치 생성 : => git branch new-branch
그 브랜치에 commit push : => git add ., commit작성 후 git push origin new-branch
브랜치 이동하기 : => git switch 브랜치 이름(main or new-branch)
브랜치 최종 merge : => git switch main : main으로 이동 => git merge -X theirs new-branch : 충돌하는 코드들 new-branch껄로 사용한다는 git line => git push origin main : 로컬에만 merge된 정보들을 github로도 전송시킴.
브랜치 제거 : => 로컬 : git branch -d new-branch => github(외부) : git push origin --delete new-branch
3. git commit 제거
git log를 통해 삭제할 commit 찾기
git reset을 통해 commit 삭제하기 - 최근의 commit을 삭제하고 싶을 땐 git reset HEAD^ - 최근의 n개의 commi을 삭제하고싶을땐 git reset HEAD~n
3. git push -f origin "branch name"을 통해 github에 commit 삭제를 알리기
4. git fork
협업시 하나의 레포지토리를 만들어서 그 레포지토리를 포크떠서 자신의 레포지토리에서 수정을 한 후 merge시키는 경우가 상당히 많다. 하지만 이 과정이 복잡해서 자주 충돌이 나거나, commit의 순서가 잘못되서 오류가 발생하는 경우가 많다.
이번 기회에 확실히 정리해서 협업시 실수하지 않도록 해보자.
Q. fork가 무엇인가?
내가 원하는 프로젝트를 나의 repository로 옮겨와서(복제) 작업을 할 수 있도록 하는 방법
협업시 하나의 organization에 분야별로 repository를 만들어서 협업을 진행하는 경우가 많다.
하나의 repository에서 많은 사람들이 동시에 작업을 해야하는데 이를 위해 fork를 떠서 자신의 repository로 가져온 후 각자 수정을 해서 결국 하나의 repository로 합쳐야 한다.
기본 개념 정리
- upstream : 협업중인 repository, fork를 해왔기 때문에 upstream으로 등록해야 한다.
- origin : 나의 github repository, 여기서는 fork해서 복제된 repository라고 생각하면 되겠다.
- local : 로컬 pc에 저장되있는 내용. local에서 작업하고 origin으로 올린다.

fork하고 로컬에서 작업하는 과정
- 원하는 repository를 fork해서 나의 repository로 복사한다.
→ github에서 fork버튼 클릭
- 복사된 repository를 로컬 pc에 git clone을 해온다.
→ git clone
- 협업중인 repository를 upstream으로 등록한다.
→ git remote add upstream url(upstream url : 협업중인 repository의 주소)
- 각자 local로 작업을 한다.
- 작업한 내용을 local에서 origin repository로 올린다
→ git add, git commit -m “”, git push origin main(main : 브랜치 이름으로 하면 된다.)
- 올린 후 github에서 compare&pull request라는 버튼이 생성되는데 이 버튼을 클릭한다.
- 그럼 협업중인 repository에서 PR요청을 확인해서 conflict해결하고 merge진행하면 된다.
협업중인 repository에서 변경된 사항을 origin repository에 반영하기
- upstream repository에서 변경사항 불러온다.
→ git fetch upstream master
- 변경사항을 local repository에 merge한다.
→ git merge upstream/master
- 최종적으로 local repository내용을 origin repository에 반영한다.
→ git commit, git push…
주의사항
- PR을 등록하기 전 upstream에 바뀐 내용이 없는 경우
- 그냥 local에서 origin으로 commit, push
- origin에서 upstream으로 PR보내기
- PR을 등록하기 전 upstream에 바뀐 내용이 있는 경우
- upstream에 내용을 local로 fetch해온다.
- local에서 origin으로 commit, push
- origin에서 upstream으로 PR보내기
- 참고 : 그럼 바뀐지 아닌지 어떻게 아냐?
⇒ git fetch upstream master, git merge upstream/master 해보면 됨.
5. git commit 규칙
커밋 메시지의 7가지 규칙
- 제목과 본문을 빈 행으로 구분한다.
- 제목은 50글자 이내로 제한한다.
- 제목의 첫 글자는 대문자로 작성한다.
- 제목 끝에는 마침표를 넣지 않는다.
- 제목은 명령문으로 사용하며 과거형을 사용하지 않는다.
- 본문의 각 행은 72글자 내로 제한한다.
- 어떻게 보다는 무엇과 왜를 설명한다.
예시 :
타입(스코프): 주제(제목)
타입 이름 | 내용 |
feat | 새로운 기능에 대한 커밋 |
fix | 버그 수정에 대한 커밋 |
build | 빌드 관련 파일 수정 / 모듈 설치 또는 삭제에 대한 커밋 |
chore | 그 외 자잘한 수정에 대한 커밋 |
ci | ci 관련 설정 수정에 대한 커밋 |
docs | 문서 수정에 대한 커밋 |
style | 코드 스타일 혹은 포맷 등에 관한 커밋 |
refactor | 코드 리팩토링에 대한 커밋 |
test | 테스트 코드 수정에 대한 커밋 |
perf | 성능 개선에 대한 커밋 |