기술면접05

DaY·2021년 5월 6일
1

기술면접

목록 보기
5/6
post-thumbnail

Reference
Reference
Reference

Github

  • 소프트웨어 개발 프로젝트를 위한 소스코드 관리 서비스
  • 소스 코드를 열람하고 간단한 버그 관리, 의사소통 기능 제공

Git : 분산 버전 관리 시스템, 형상 관리 도구, 로컬 저장소
Github : git을 사용하는 프로젝트를 지원하는 웹 호스팅 서비스, 웹 사이트, 플랫폼, 원격 클라우드 저장소

로컬 / 원격 저장소

  • 로컬 저장소 : 자신의 컴퓨터에 있는 저장소
  • 원격 저장소 : 서버 등의 네트워크에 있는 저장소

로컬 저장소에서 작업을 수행하고 그 결과를 원격 저장소에 저장

원격 저장소 이름 목록 git remote
로컬 저장소와 원격 저장소 연결 git remote add origin 원격주소
원격 저장소 연결 확인 git remote -v
로컬 저장소에서 원격 저장소로 push
git push -u origin master

-u : 로컬 저장소 master 브랜치를 원격 저장소 master 브랜치에 연결 옵션

원격 저장소에서 로컬 저장소로 pull git pull origin master git pull
로컬 저장소에서 만든 브랜치를 원격 저장소에 반영 git push origin 브랜치이름
원격 저장소의 브랜치를 로컬 저장소로 가져오기
git pull
git checkout -b 바꿀원격브랜치이름 원래원격브랜치이름
git checkout -t 원래원격브랜치이름
pull과 fetch와 merge의 차이점
pull == fetch + merge
git fetch git chechout FETCH_HEAD git merge FETCH_HEAD
원격 저장소를 로컬 저장소에 다운로드
git clone 복사한주소
git clone 복사한주소 바꾸고싶은파일명

fork
1. fork시 개인 계정에 레포지토리 생성
2. 원격 주소로 로컬에 추가

git clone 주소
(브랜치 생성) git checkout 브랜치명

git clone -b 브랜치명 원격주소 (특정 브랜치 클론)

  1. 코드 수정 및 파일 추가 후 커밋푸시
    git commit -am "커밋내용"
    git push origin 브랜치이름
  2. Pull Request 수행

브랜치 (Branch)

  • 병렬로 수행되는 여러 버전 관리를 위한 기능
  • 브랜치는 흐름을 분리하여 기록, 분리된 브랜치는 다른 브랜치에 영향을 받지 않아 같은 저장소에서 각자 개발을 할 수 있다.

현재 브랜치 목록 git branch

"*" : 현재 브랜치

브랜치 생성 git branch 브랜치 이름
브랜치 이동 git checkout 브랜치 이름
브랜치 생성 및 이동 git checkout -b 브랜치 이름
지정 브랜치에 push git push origin 브랜치 이름
브랜치 병합(master 브랜치에서 수행) git merge 브랜치 이름
브랜치 삭제 git branch -d 브랜치 이름
브랜치 로그 그래프를 확인 git log --oneline --branches --graph

그 외 명령어

커밋 내역을 확인 git log -n 내역 수 지정
파일 내용에서 검색 git grep "검색 단어"
사용자의 아이디/이메일을 설정
git config user.name 아이디 git config user.email 이메일주소
해당 디렉토리를 깃 저장소로 변경 git init git init 디렉토리이름
해당 디렉토리의 상태를 확인 git status 로그를 확인 git log
스테이징 git add 파일이름.확장자
커밋 git commit -m "커밋내용"
스테이징과 커밋 git commit -am "커밋내용"
커밋/스테이징을 취소 git reset HEAD^
작업 트리에서의 수정 내역 삭제
git restore 파일이름.확장자 git checkout 파일이름.확장자

커밋 방법론

Git Flow

기본 브런치는 5가지를 이야기한다.
feature > develop > release > hotfix > master 브런치가 존재하며, 머지 순서는 앞에서 뒤로 진행된다.
release 브런치와 hotfix 브런치의 경우, develop 브런치의 오른쪽에 존재하기에 모두 develop 브런치도 머지를 하도록 구성이 되어있다.

Feature 브런치

  • 브런치 나오는 곳 : develop
  • 브런치가 들어가는 곳 : develop
  • 이름 지정 : master, develop, release-, hotfix-를 제외한 어떤 것이든 가능.

새로운 기능을 추가하는 브런치로, origin에는 반영하지 않고, 개발자의 reop애만 존재하도록 한다.

Release 브런치

  • 브런치 나오는 곳 : develop
  • 브런치가 들어가는 곳 : develop, master
  • 이름 지정 : release-*

새로운 Production 릴리즈를 위한 브런치이다.
지금까지 한 기능을 묶어 develop 브런치에서 release 브런치를 따내고, develop 브런치에서는 다음번 릴리즈에서 사용할 기능을 추가한다.
release 브런치에서는 버그 픽스에 대한 부분만 커밋하고, 릴리즈가 준비되었다고 생각하면 master로 머지를 진행한다.
master로 머지 후 tag 명령을 이용하여 릴리즈 버전에 대해 명시를 하고, -s 나 -u 옵션을 이용하여 머지한 사람의 정보를 남겨두도록 한다. 그런 뒤 develop 브런치로 머지하여, release 브런치에서 수정된 내용이 develop 브런치에 반영한다.

Hotfix 브런치

  • 브런치 나오는 곳 : master
  • 브런치가 들어가는 곳 : develop, master
  • 이름 지정 : hotfix-*

Production에서 발생한 버그들을 저장하는 브런치.
수정 끝나면, develop, master 브런치에 반영하고, master에는 tag를 추가해준다.
만약 release 브런치가 존재한다면, release 브런치에 hotfix 브런치를 머지하여 릴리즈 될 때 반영이 될 수 있도록 한다.

Github Flow

Git flow가 GitHub에서 사용하기에는 복잡하다 여겨져 사용하지 않고 GitHub Flow로 사용되고 있다.

  1. master 브런치는 어떤 때든 배포가 가능하다.
  2. 새로운 일을 시작하기 위해 브런치를 master에서 딴다면 이름은 어떤 일을 하는지 명확하게 작성한다.
  3. 원격지 브런치로 수시로 push를 한다.
  4. 피드백이나 도움이 필요할 때, 그리고 머징 준비가 완료되었을 때는 pull request를 생성한다.
  5. 기능에 대한 리뷰와 사인이 끝난 후 master로 머지한다.
  6. master로 머지되고 푸시되었을 때는 즉시 배포되어야 한다.

GitLab Flow

Github flow는 간단하여 배포, 환경 구성, 릴리즈, 통합에 대한 이슈가 많았다.
그것을 보안하기 위해 GitLab에서 관련 내용들을 추가적으로 덧붙여 설명한 것을 일컫는다.

0개의 댓글