Tech is created to fix problem

Git merge, pull request, 깃헙의 유용한 기능들 본문

Git & Github

Git merge, pull request, 깃헙의 유용한 기능들

furaha 2023. 7. 18. 17:22
반응형

git branch 관련 명령어들

  • git branch 브랜치이름 : 브랜치 만듦. 브랜치로 이동 X
  • git switch -c 브랜치이름 : 브랜치 처음으로 만들고 브랜치로 이동 O
    * 2019년도부터 checkout이 switch로 업데이트됨!!
  • git branch --list : 현재 브랜치 목록
  • git branch -d 브랜치이름 : 해당 브랜치 삭제하기
  • git push origin 브랜치이름 : 브랜치 내용을 원격 origin 으로 푸시
  • git merge 브랜치이름 : 현재 경로에서 브랜치 내용들을 병합

  • git rm -rf .git : 깃 완전 초기화. git init 부터 싹 삭제
  • git rm 특정파일이름 : 특정 파일만 삭제

Pull request

  • Pull = fetch(원격저장소 내용 가져오기) + merge(로컬과 병합)의 개념
  • Pull request 날릴 때, 코드리뷰 요청이나 코멘트!! 작성하는 습관을 꼭 들이자
  • main에서 branch merge 했으면 그 branch는 바로 삭제! (현재 작업하고 있는 브랜치를 더욱 직관적으로 보기 위해)
  • github에서 branch 지웠다고 local에 반영되지 않음. 그래서
    git fetch —prune (가지치기 해주자. 원격저장소에서 사라진 브랜치를 vscode에서도 삭제해줌. 단 로컬은 직접 삭제해주어야 함. 원격과 다른개념이기 때문에)

깃허브에서 Conflict 되었을때??

  1. 바로 깃허브에서 수정할 수도 있지만
  2. 로컬에서 수정해서 다시 푸시하는 게 정석
    (충돌나는 브랜치 파일로 가서 git merge main 해서 해결해주고 다시 푸시하자)

깃허브에서 정말 몰랐던 기능들,,

Issue : 프로젝트의 TODO, 요청사항, 진행사항이나 목표 등등
Milestones : ISSUE의 진행상황을 차트로 보여줌
Wiki : 이 프로젝트에 대한 기술서

실제로 프로젝트 할 때, 사용하게 될지는 잘 모르겠지만 프로젝트를 관리하는 데 굉장히 유용할 것 같기는 하다

branch 분기해서 pull request 보내는 연습해보기

삽질1) push할 때 rejected 오류가 나는건 원격저장소와 로컬의 커밋 버전이 일치하지 않기 때문이다!!

해결1) git reset —hard HEAD~1 내 커밋을 한 단계 뒤로 리셋(깔끔한 방법이지만 reset은 비추)
해결2) 🚩 웬만하면 pull 해서 내 로컬 내용이랑 충돌되는 것 해결해주고 다시 푸시할 것!!
해결3) fast forward 라면 푸시 가능함 왜?

fast-forward

(fast-forward)

  • branch가 main의 커밋 내역을 가져와서 새로운 커밋을 만들어냄
  • Head 위치는 브랜치의 Y 로 이동하게 됨
  • branch가 모든 커밋내역을 가지고 있다면, 병합할 때 단순하게 커밋이 이동한다!

(none-fast-forward)

  • branch가 main의 모든 커밋 내역을 가지고 있지 않다
  • main 에서 병합하게 되면, 커밋 이동이 아닌 새로운 커밋이 생기면서 병합한다!

결론적으로 fast-forward의 장/단점을 따지자면

장점 : 분기점이 남지 않기 때문에 커밋 기록을 더 직관적으로 볼 수 있다
단점 : merge 했다는 기록도 없고, 분기점도 없다

결론은 기록이 상세하지 않기 때문에 비추이다!!!


삽질2) git stashed 는 왜 해야할까,,?

저 pull 에러의 원인은 원격 저장소에서 pull 할 때 로컬에 수정한 파일이 존재하기 때문이다.
로컬에서 파일 수정 중에 pull 하려고 하면 위와 같은 에러가 발생한다. 그래서??

해결1) git stash
로컬 내 수정사항을 임시 공간으로 옮긴 후

해결2) git pull origin main
원격 저장소를 pull 한다

해결3) git stash pop
로컬 내 수정사항과 원격 저장소에서 pull 한 파일을 병합한다

오늘의 한 줄

Github desktop 즉 GUI 만 사용해서, 병합하거나 충돌나거나 브랜치 분기하거나 모든 것을 버튼 하나면 다 해결되었는데,, 하나 하나 깃 명령어로 하려니까 현재 상태가 잘 그려지지 않아서 어렵고 헷갈린다,, 현업에서 모두 CLI를 쓰는건가ㅜ

반응형