Git, Github 230712

SKY·2023년 7월 12일
0

~ 오늘은 3일차 ~


- 목차

1. Branch
2. Merge & Merge Conflict
3. Pull Request
4. Github 자체 기능 활용 (issue, milestone 등)

+ 복기일기



1. Branch

(1) 생성 : git branch (branch명)
(2) 생성 후 바로 전환 : git switch -c (branch명)
(3) 전환 : git switch (branch명)
(4) branch 목록 확인 : git branch --list
(5) 브랜치 삭제 : git branch -D (branch 1) (branch 2)

기타

  • master일 경우 main으로 변환 : git config --global init.defaultBranch main
  • 현재 git 기록 삭제 : rm -rf .git
  • 커밋 로그 : git log --graph --decorate --oneline
    ㄴ merge한 과정을 볼 수 있다.



2. Merge & Merge Conflict

(1) Merge

① main에 branch 병합 (main으로 switch한 다음 실행) : git merge (branch명)
② merge 후 add → commit

(2) Merge Conflict

  • 같은 파일의 같은 부분을 수정했을 때 발생
  • VS코드는 선택하거나 둘 다 선택 가능
    ! 해결 후에는 add-commit !
  • 다만, 보통 Merge 는 Pull Request를 통해서 진행하기에 선택 할 일이 많이 없다.
  • 애초에 작업을 분담할 때 서로 다른 파일을 담당하도록, 혹은 같은 파일을 작성하더라도 다른 부분을 작성하도록 분담하는 것이 conflict를 방지 하는 것.

(3) fast-forward 와 rebase

  • fast-forward 관계 :
    main에서 추가 branch 생성 후에 수정 기록이 없을 때, main에 develop의 commit 기록이 바로 병합
  • rebase :
    커밋 히스토리를 정렬하기 위한 명령어,
    main에 수정기록이 있어도 branch가 만들어진 시점으로 main 커밋 히스토리 중간에 병합
  • 보통은 non fast-forward 형태로 병합을 진행
  • ff일 때 줄기가 나눠진 형태로 merge하고 싶을 경우 : git merge develop --no-ff



3. Pull Request

  • 보편적인 branch의 구성
    main : 사용자가 이용할 서비스의 코드가 담기는 브랜치, 해당 브랜치에 있는 코드가 사용자에게 배포
    develop : 배포 전 모든 기능 통합
    feature : 기능을 분할해서 각각의 기능 구현
  • github repo에서 진행
    상단에 떠있거나, pull request로 가서 새로 생성할 수 있다.

(1) Pull Request 작성

작성 시 들어갈 내용

  • 현재 PR 요약/개요
  • 코드 변경 이유 (작성 이유)
  • 관련 스크린샷
  • 테스트 내용
  • 리뷰 관련 요청사항

(2) files changed에서 코드리뷰 및 approve

start a review -> 코드의 여러 부분에 대해서 코멘트를 작성
② 우측 상단의 finish your review
approve 체크 후 submit review
-> 본인의 것은 approve 안됨
merge pull request - confirm merge - delete branch
-> 보통 주니어 개발자가 누를 일은 없음

(3) local 반영 (git fetch —prune)

  • pull request 가 merge 된 이후 & git pull 전

    ① 우리 컴퓨터가 github 상에서 해당 브랜치들 삭제한 것 인식 하도록 가지치기 : git fetch --prune
    ② 로컬 브랜치 삭제 : git branch -D (branch 1) (branch 2)
    ③ git pull origin main 진행




4. Github 자체 기능 활용 (issue, milestone 등)

  • issue, milestone 등은 이름과 형식을 통일해 주는 것이 좋다.
    (ex: Feat: Add feature/name)
  • 보통 issue명을 branch명으로 통일한다.

(1) issue 작성

  • 내부 내용은 개요, 세부사항을 넣어준다.
  • 세부사항에는 - [ ] 로 체크리스트를 만든다.

    Assignees -> 해당 작업을 담당할 사람
    label -> 해당하는 카테고리
    milestone -> milestone 지정

(2) pull request에서 issue 활용

  • 개요이슈번호를 넣어준다.
  • Close를 넣어주면 merge 후 자동으로 issue가 완료된다.

    ##개요

    ##이슈번호
    Close (이슈번호 ex: #4 )

(3) wiki의 활용 가능 범위

  • 업데이트 사항
  • 서비스 소개 (readme.md 에 다 적지 못한 부분 등)
  • 서비스 기능
  • 매뉴얼 (개발자 혹은 사용자를 위한)
  • 해당 프로젝트에 기여하는 방법 (how to contribute)

(4) Github Pages

  • new repo 작성 시 레포네임에 (유저명).github.io을 작성해서 정적 배포가 가능
    ex) https://sky-pey.github.io/

(5) github actions

  • repo 에서 특정한 이벤트가 발생했을 때 자동으로 특정한 작업이 실행되도록 하는 기능

  • 배포, CI/CD (자동 빌드 및 자동 배포), 테스트 등이 가능





+ 복기일기


문제점 복기를 시작해보자.

오늘은 그래도 온라인 강의와 강의 자료 예습으로 어느정도 숙지하고 시작해서 어제보단 허둥거리는 게 덜해졌다.
터미널도 PowerShell에서 Git Bash로 바꾸고 나니, 윈도우에서 먹히지 않는 명령어 rm -rf .git 등이 실행되면서 진도를 따라가기가 쉬워졌다.

에러가 난 부분은 팀과의 협업 실습에서 발생했다.
에러는 타 팀원에 의해 발생했고 마무리 작업을 내가 진행해야 하면서 직접 처리해볼 기회가 생겼었다.
결론부터 말하자면 수습을 실패해서 강사님이 직접 해주시고 갔다.

오류 내용과 해결 과정은 다음과 같다.

  • 에러 1
    branch를 만들고 난 다음 pull request를 진행해야 했는데 push로 main에 바로 들어감.
  • 에러 2
    내가 가지고 있는 main에서 reset을 진행했는데 어떤 문제로 제대로 해결 되지 않음.
    -> 제대로 된 루트를 실행하지 않은 것으로 보인다.

  • 해결 과정
    강사님이 revert를 해보라고 했지만 이미 reset한 상태라 돌아갈 commit이 없는 상태가 되었고,
    git push -f origin main으로 해결이 되었다.


    git push -f 는 강의 내용에 없었는데 아무래도 강제로 하는 push이고 잘 사용하지 않다보니 내용에 포함되지 않은 것으로 보인다.

해당 에러가 났을 때,
어떤 걸 해야할 지 아직 판단이 되지 못해서 강사님이 reset과 revert를 코칭해주셨다.
분명 어제 배운 내용임에도 막상 문제가 났을 때 떠올리지 못한 게 아쉽지만 그래도 이번 일을 통해 다음에 이런 문제가 난다면 떠올릴 수 있을 거라 확신이 든다.

실습 내용을 들었을 때는 너무 간단한 내용이 아닌가 싶었지만 확실히 협업을 할 때는 어떤 에러가 날지 모른다는 걸 몸소 깨달아 재밌었다.

비록 아직까지 velog를 복습 목적으로 강의 내용을 요약하고 약간의 복기 일기로 쓰고 있지만,
나중에는 요약보다는 기술 복기가 주로 되었으면 하는 필자의 소소한 바람이 있다.

0개의 댓글

관련 채용 정보