[github] 협업

오리·2024년 3월 15일
post-thumbnail

협업에 가장 중요한 git 사용법에 대해 알아볼 것이다.
이전 프로젝트 할 때 굉장히 복잡하고 어려웠다.. 겨우 커밋 푸쉬 정도만 이해한 수준... 하지만 이번에 확실히 정리가 됐다!! 그림으로 설명하니 이해가 훨씬 쉬워졌다. 앞으로는 그림을 많이많이 활용하는 것이 좋겠다😘

1. 개발 방법론

1) Waterfall (폭포수 모형)

  • 순차적으로 개발
  • 체계화된 문서로 안정적인 진행
  • 프로젝트 진행 상황을 명확하게 파악 가능
  • 완료된 단계는 다시 되돌리기 어렵다.

2) Agile

  • 짧은 주기로 개발 단위를 반복해 큰 프로젝트를 완성해 나간다.
  • 즉, 짧은 주기로 설계, 개발, 테스트, 배포 과정을 반복한다.
  • 요구 사항을 작은 단위로 나눠 솔루션을 만들고, 빠르게 보여줌으로써 요구사항 검증을 한다.
  • 협력과 피드백의 과정을 반복한다.
  • 유연한 일 진행과 빠른 대응이 가능

3) Scrum(스크럼)

  • 상호 점진적 개발방법론
    1. 개발자-고객간에 지속적인 소통을 통해 요구사항 수용
    2. 고객이 결정한 사항을 우선적으로 시행
    3. 팀원과 주기적인 미팅을 통해 프로젝트 점검
    4. 주기적으로 제품 시현하고 고객으로부터 피드백 수용
  • SPRINT : 작은 기능에 대해 계획,개발,테스트,기능완료 하는 것.
    - 일반적인 스프린트 주기는 1~2주

4) Kanban(칸반)

  • 단계별 작업 현황을 열(Column)형식의 보드형태로 시각화하는 프로젝트 관리 방법
  • 업무 흐름의 시각화
  • 진행 중 업무에 대한 제한
  • 명시적 프로세스 정책 수립
  • 업무흐름의 측정과 관리

2. git

  • 소스코드를 효율적으로 관리하기 위해 만들어진 분산형 버전관리 시스템
  • 소스코드의 변경 이력을 쉽게 확인할 수 있다.
  • 특정 시점에 저장된 버전이나 특정 시점으로 돌아가기 위해 사용한다.

1) branch(브랜치)

  • 독립적으로 어떤 작업을 수행하기 위해 필요한 개념

-> A라는 사람이 로그인 기능을 맡고 B라는 사람이 버그수정을 할 때 최초 브랜치에서 파생한 브랜치를 만들어 작업을 진행하고, 최초 브랜치에 merge하여 각자가 작업한 것을 합칠 수 있다.

2) 명령어

git branch

  • 로컬 브랜치 목록 확인

git branch "브랜치명"

  • 현재 브랜치에서 새로운 branch생성

git branch "전환 브랜치명"

  • branch 이동

git -d "브랜치명"

  • branch 삭제
  • 단, 삭제할 브랜치가 현재 브랜치에 합쳐져 있을 경우에만

git checkout -b "만들 브랜치명"

  • 한번에 새로운 브랜치 생성하고 그 브랜치로 이동한다.

3) Merge

  • git 브랜치를 다른 브랜치로 합치는 과정
  • 서로 같은 파일의 같은 부분을 수정했을 때 -> 충돌!
    -> 수동으로 해결해야 한다.

3. 추가 지식

1) branch 종류

main

  • 제품으로 서비스 될 수 있는 브랜치
  • 배포 이력을 관리하기 위해 사용
  • 배포 가능한 상태만을 관리하는 브랜치
  • 이전엔 master 브랜치로 사용했었음.

develop

  • 다음 출시 버전을 개발하는 브랜치
  • 기능 개발을 위한 브랜치들을 병합하기 위해 사용
  • 평소 개발을 진행하는 브랜치
  • dev, devel으로 사용함

feature

  • 기능 개발을 진행하는 브랜치
  • 새로운 기능 개발 및 버그수정 할때마다 develop에서 분기
  • 공유할 필요가 없어서 로컬에서 진행 후 dev에 merge
  • 이름 : feature/ 또는 feat/

release

  • 출시 버전을 준비하는 브랜치
  • 배포를 위한 전용 브랜치
  • 이름 : release-0.0

hotfix

  • 출시 버전에서 발생한 버그 수정 브랜치
  • 배포한 버전에 긴급하게 사용해야 할 때 사용
  • Main에서 분기
  • hotfix-0.0

2) git 과정

  • 작업공간에서 리무트로 옮기는 작업은 이미 이전에 배웠어서, 리무트에서 작업공간으로 옮기는 작업을 유의해서 볼 것!
  • git reset : 가장 최근 커밋을 취소하고, 변경 내용을 보존
  • git reset -hard : 커밋 취소와 동시에 변경 내용을 삭제
  • git fetch : 원격(리무트)의 변경사항을 로컬로 가져옴
  • git pull : 원격의 최신 변경사항을 가져와서 현재 작업중인 브랜치에 병합
  • git clone : 원격 저장소의 복제본을 로컬에 생성하는 작업 수행

3) pull request

  • push 권한이 없는 오픈 소스 프로젝트에 기여할 때 많이 사용
  • "내가 수정한 코드가 있으니 내 branch를 가져가 병합(merge)해주세요."
  • 즉, 포크(Fork)한 뒤, 포크한 저장소에서 변경 사항을 가지고 원래 저장소의 소유자에게 병합(merge)해달라고 요청하는 것이다!
  • 당황스러운 코드 충돌을 줄일 수 있고, 효율적으로 코드 관리를 할 수 있다.

4) .gitignore

  • git 관리에서 제외할 파일을 지정하는 파일
  • 특정 파일을 제외하기 위해서는 git에 올리기 전, gitignore에 파일목록을 미리 추가해야 한다.

*.txt

  • 확장자가 txt로 끝나는 파일 모두 무시

!test.txt

  • test.txt는 무시되지 않음

test/

  • test 내부의 모든 파일을 무시

/test

  • (현재 폴더) 내에 존재하는 모든 파일 무시

4. 기타 고려사항

1) nomalize.css

2) reset.css

profile
암튼 해보는 개발자호소인

0개의 댓글