Git_개발협업

송민혁·2023년 9월 18일
0

Git

목록 보기
5/6
post-thumbnail

들어가기 전

개발자는 늘 소통하는 직업이다.

개인 프로젝트가 아닌 대규모 서비스 프로젝트를 들어가다 보면 많은 양의 코드를 혼자 작성하기에는 무리가 갈 수 있다.
그래서 개발자에게 코드 공유와 협업을 불가피하다. 그리고 누군가에게 코드를 리뷰를 하기 위해서 git을 사용한다.

장점으로 어떠한 기능을 강조하는 것도 좋지만 단점으로 한 내용을 강조하는 것도 효과적이다.
그렇다면 협업 실패가 초래하는 문제점들과 그에 관한 원인들을 살펴보자

협업 실패가 초래하는 문제점들

  • 팀원 간의 소통 부재
  • 비효율적인 업무 _ 같은 업무를 하는데 더 많은 시간이 필요하다.
  • 중복 작업, 필요 없는 일 수행

협업에 실패하는 주된 원인들

  • git과 github에 대한 이해 부족
  • 커뮤니케이션 스킬 부족

Git의 전반적인 내용과 흐름

git에는 중요한 내용들이 정말 많습니다. 그러기에 크게 나눌 필요가 있다.
그래서 이 글에서는 git에 대한 4가지 내용과 git work-flow에 대해 요약하는 내용을 다룰 생각이다.

목차
4가지 개념
1. Git의 핵심 구조와 파일의 상태 변화
2. 커밋
3. 브랜치
4. 로컬 저장소와 원격 저장소

  • 일반적인 Git의 작업 흐름

Git의 핵심 구조와 상태 변화

구조

Git의 구조는 크게 4가지 영역으로 나눌 수 있다.
working directory, staging area, repository (Local, Remote)
영역을 어떻게 들어가고 나가는지 원리를 알면 구조에 대한 구분이 명확해질 수 있다.

구조

  • working directory: 내가 현재 작업하는 디렉토리
  • staging area: git add를 한 파일들을 모아둔 곳이다.
  • Local repository: 로컬 저장소로서 git commit한 파일들을 모아둔 곳이다.
  • Remote repository: 원격 저장소로서 git push한 파일들을 모아둔 곳이다.

git add <-> git reset <file>
git commit <-> git reset --soft
git push <-> git fetch

파일 상태

영역에 따른 구분이 되었다면 파일에 따른 구분도 필요하다.
파일 상태는 크게 2가지이고 세분화하면 4가지로 나눌 수 있다.

  • Untracked : git이 관리하지 않는 파일
  • Tracked : git이 관리하는 파일
    • Unmodified : 최근 커밋과 비교해서 수정되지 않은 파일
    • Modified : 최근 커밋과 비교해서 수정된 파일
    • Staged : staging area에 있는 파일

Commit

커밋은 작업 내용의 버전을 기록하기 위해 쓰인다.

쉽게 말해서 커밋은 작업 내용의 '스냅샷'과 같다.

커밋과 푸시의 차이
커밋은 로컬 저장소에 변경 내역을 저장하는 동작이다.
반면에 푸시는 커밋을 한 변경 내역을 원격 저장소에 업로드하는 동작이다.

Branch

브랜치는 git에서 독립적인 작업 영역이고 그 결과를 저장할 수 있는 개별적인 흐름이다.
브랜치를 사용하면 서로 다른 작업을 별도로 작업할 수 있고 나중에 하나의 코드베이스로 병합할 수 있다.

브랜치는 특정 커밋을 가리키는 참조이다.

다시 말해 브랜치는 특정 '버전(커밋)'을 가리키고 있다.
이를 통해 우리는 여러 개의 작업을 독립적으로 진행할 수 있다.

Local Repository & Remote Repository

로컬 저장소는 개의 컴퓨터에 위치하며, 원격 저장소는 인터넷상의 서버 등에 위치한다.

원격 저장소를 이용하면 다른 사람들과 협업할 수 잇고 백업을 생성할 수 있다.

원격 저장소 초반 등록

git push --set-upstream origin master

origin이라는 원격저장소를 추적하면서 origin이라는 원격저장소에 로컬에 있는 master 브랜치를 보내는 커맨드이다.

일반적인 Git의 작업 흐름


GitHub

  • Organization
  • Projects
  • Issues
  • Pull Requests
  • Code Reviews

0개의 댓글