1.drf 팀 프로젝트 git - PR후 작업, push취소, branch명 변경, commit내용 변경
문제점
팀 프로젝트를 진행하며 기존에 사용했던 방법이 생각나지 않거나, 처음 겪는 상황을 마주함
시도해 본 것들
git 사용법 정리해보기
fetch = 로컬 저장소에서 하는 Synk fork
pull = fetch + merge
origin/develop = 원격저장소의develop
PR후 다른 브랜치 생성해서 작업하는 경우
fork한 내 repo Synk fork -> git fetch ->
git checkout origin/develop로 fetch한 원격repo 로컬repo 연결 확인
git checkout develop-> git merge origin/develop으로 머지 -> 기존 branch -D 삭제
-> develop에서 feature/[브랜치명]으로 git log 반영한 branch생성 -> 작업 시작
기존에 하던 작업이 없는 상태에서 원본 repo의 내용을 반영한 뒤 다른 작업을 시작할 때의 예시다.
원본 develop에 바뀐 코드가 필요한 경우 & rejected 발생시
기존 작업 중인 내용 git stash로 저장 -> fork한 내 repo Synk fork ->
git fetch -> git checkout origin/develop로 fetch한 원격repo 로컬repo 연결 확인
git checkout develop-> git merge origin/develop으로 머지 -> 기존 branch -D 삭제
-> develop에서 feature/[브랜치명]으로 git log 반영한 branch생성 ->
git stash apply stash@{0}로 stash 적용
-> conflict발생시 해결 -> 작업 시작
원본 브랜치에서 내게 필요한 변경사항이 생겼지만, 내 로컬 변경사항이 아직 commit으로 만들기 애매한 경우
Synk fork를 하고 로컬 branch가 그것을 반영하지 못한채 push를 시도한 경우 <- git log를 원격 repo와 일치시키기 위함
push 실수 했을 때 조치 방법
git log로 commit 내역 확인 -> git reset HEAD^로 최근 commit 취소 -> git push -f로 강제 push
or
git log --oneline으로 commit 내역 확인 -> 되돌릴 지점 해시 확인 -> git reset <해시>
-> git push -f로 강제 push
push를 실수 했을 때 원격 repo에 commit log를 지우는 방법, 하지만 -f는 위험성이 크므로 개인 repo가 아니면 사용 자제하기 <- 다른 사람의 log에 영향 생길 수 있음
branch명 잘못 만든 경우
이름 바꿀 브랜치에서 git branch -m [새 브랜치 명]
-> 이미 push --set-upstream한 경우 git push --set-upstream origin [새 브랜치명]
-> 잘못 push한 branch 원격 repo에서 삭제
오타로 branch를 잘못 만들었을 때 간단한 조치 방법
가장 최근 commit 메시지 수정
git commit --amend -> git log로 수정 확인
commit 컨벤션을 지키는 중 빠진 내용을 reset하지 않고 commit message만 수정하기
이전 commit 메시지 수정
git rebase -i HEAD~[head에서 떨어진 수] -> 수정할 commit의 pick을 reword로 변경 후 저장
-> 순서대로 commit 변경 메시지 작성 -> git log로 수정 확인
여러 commit 내역을 한 번에 수정 하거나 head에서 멀리 떨어진 commit의 메시지도 수정 가능하다.
알게 된 점
이전 팀 프로젝트 때 알고있는 방법보다 더 쉽게 같은 결과를 만들 수 있는 방법이 꽤 존재했다.
이렇게 한 번 정리를 하면서 고민을 하거나, 정리한 내용을 참고하지 않아도 git을 사용하는데 딜레이가 없이 사용할 수 있는 것을 느끼며 git은 명령어만 배운 것과 실제로 써보는 게 매우 큰 차이가 있음을 체감했다.
'개발일지 > TIL' 카테고리의 다른 글
TIL 23-05-13 drf 팀 프로젝트 - 프론트에서 이미지 보내기 (0) | 2023.05.13 |
---|---|
TIL 23-05-12 drf 팀프로젝트 - serializer update(), ininstance (0) | 2023.05.12 |
TIL 23-05-10 drf 팀 프로젝트 - 이메일 인증 (0) | 2023.05.11 |
TIL-23-05-09 drf 팀 프로젝트 - validation (0) | 2023.05.09 |
TIL 23-05-08 DRF 팀 프로젝트 (0) | 2023.05.08 |