본문 바로가기

개발일지/TIL

TIL 23-05-11 drf 팀 프로젝트 - git - PR후 작업, push취소, branch명 변경, commit내용 변경

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은 명령어만 배운 것과 실제로 써보는 게 매우 큰 차이가 있음을 체감했다.