[코드스테이츠 백엔드 44기 SEB BE] 4일차

오태호·2023년 2월 17일
0

코드스테이츠

목록 보기
4/22
post-thumbnail

Git

버전 관리를 사용해야 하는 이유

  1. 파일이 변경되면 변경 이력을 저장할 수 있다
  2. 이전 버전으로 돌아갈 수 있다
  3. 어떤 변경 사항이 발생했는지 알아보기 쉽다
  4. 협업하기에 좋다
  5. 백업용으로 사용될 수 있다

Git

  • 개발자의 코드를 효율적으로 관리하기 위한 분산형 버전 관리 시스템
    • 스냅샷 : 특정 시점에 생성된 백업 복사본
    • 날짜별로 어떤 파일이 어떻게 바뀌었는지 확인 가능
    • commit : 스냅샷을 만들어주는 작업
      • commit을 통해 변경 사항에 대한 스냅샷이 만들어지고 이전의 기록들에 대한 추적 가능
    • 어떤 부분이 변경되었는지 한눈에 확인 가능
      • 코드가 변경된 이력을 쉽게 확인할 수 있고, 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수 있음

Git vs Github

  • Git
    • Git Repository를 관리할 수 있는 클라우드 기반 서비스
  • Github
    • Git으로 버전을 관리하는 폴더에 대해 여러 사람들이 공유하고 접근할 수 있도록 도와줌
    • 협업이 가능하고, 수많은 오픈 소스 프로젝트들이 Github로부터 호스팅되고 있어 자유롭게 기여 가능
      • contribute(기여하다) : 오픈소스에 기능을 추가하고 개선하는 작업
    • commit 기록을 통해 수정사항에 대해 확인할 수 있고 변경된 코드를 볼 수 있음

Git Repository

  • Git으로 관리되는 폴더
    • 소스 코드 폴더가 버전 관리를 받게 하기 위해서는 Git 관리 하에 두어야 함
  • Remote Repository, Local Repository 두 종류의 저장소 제공
    • Local Repository
      • 작업 시에 Local Repository에서 작업
    • Remote Repository
      • Remote Repository에 업로드하여 여러 사람과 함께 공유 가능

Fork

  • 원격 저장소를 나의 원격 저장소로 가지고 오는 작업

Clone

  • Remote Repository에 있는 코드를 내 컴퓨터로 가져오는 작업

Commit

  • 소스코드 변경 작업 후에 변경된 내용을 저장하는 작업

Push

  • commit된 것을 Remote Repository에 올려주는 작업
    • Local Repository에 기록해 놓은 commit을 Remote Repository에 업로드

Push request

  • 내가 변경한 코드 변경사항에 대해 반영 여부를 요청

Pull

  • Remote Repository에서 변경 사항이 있을 때, Local Repository로 가져오는 작업

Git이란?

  • 파일을 관리해주는 프로그램
    • 파일의 변경 사항을 추적하여 각 파일의 버전을 관리할 수 있게 도와줌
    • 파일을 백업할 수 있게 해줌
    • 협업자들과 함께 파일을 공유하고, 각자의 작업물을 취합할 수 있게 해줌

Git으로 할 수 있는 것들

  1. 버전 관리
    • Git이 관리하는 디렉토리에 문서를 만들면 Git으로 문서의 버전을 관리할 수 있음
      - 문서를 수정할 때마다 언제 어떤 부분이 어떻게 수정되었는지에 대해 Git이 기록
      • 이전 버전으로 돌아가야 한다면 Git이 기록해둔 내용을 확인하여 돌아가고자 하는 이전 버전을 선택한 후 버전을 되돌릴 수 있음
      • 특정 버전에서 두 버전으로 분기한 후, 분기한 두 버전을 각각 다르게 수정할 수 있음
  2. 백업
    • 온라인 원격 저장소에 백업할 수 있는 백업 기능을 제공
  3. 협업
    • 여러 작업자가 하나의 작업물에서 다른 부분을 각각 작업할 때, 작업물을 공유하고 취합할 수 있게 도와줌
      - 만든 부분을 Remote Repository에 업로드하고 이를 다운로드하여 Git이 작업물들을 취합해준 뒤, 잘 취합됐는지 확인 후 Remote Repository에 업로드
      • 같은 부분을 다르게 작업하면 사용자에게 해당 부분의 수정 내용이 서로 다름을 알려주고 사용자는 반영할 내용을 선택할 수 있음

Git과 Github

Git

  • 로컬에서 버전을 관리해주는 프로그램
  • 백업 기능 혹은 협업을 위한 기능을 활용하기 위해서는 온라인 원격 저장소 요구됨
  • 온라인 원격 저장소를 제공해주는 서비스 중 하나가 Github

Github

  • Git이 설치되어있는 클라우드 저장소
  • 로컬에서 Git이 관리하는 파일을 Github의 원격 저장소에 업로드하면, 업로드된 파일들은 버전 관리 기능을 사용할 수 있으며, 온라인 저장소이므로 백업 및 다른 협업자들과 공유 가능

Git의 영역과 기본 명령어

Git의 주요기능 3가지

  1. 버전 관리
  2. 백업
  3. 협업

Git의 영역

  • Git으로 관리하는 파일이 위치하는 영역
  • Git의 각 영역은 온라인/로컬로 나뉨
    • 온라인 : Remote Repository(원격 저장소)
    • 로컬 : Work space(작업 공간), Staging area(스테이징 영역), Local Repository(지역 저장소)

Work space

  • Working tree 또는 Work tree라고도 함
  • 눈으로 볼 수 있는 디렉토리 자체를 의미
  • Git은 Work space를 자동으로 스캔
    • Work space를 스캔하다가 변경사항을 발견하면 사용자에게 해당 사항을 알려주고, 어떤 행위를 취해야하는지 적절한 명령어 및 동작을 알려줌
  • git init을 입력한 직후, 어떠한 Git 명령어도 입력하지 않은 상태의 파일들이 존재

Staging area

  • Local Repository에 저장할 파일들이 임시적으로 대기하는 영역
  • Work space에서 작업을 마친 파을일 Staging area에 옮겨놓고, 단위 작업이 끝나면 Staging area에 모인 파일들을 한 번에 Local Repository로 저장
git add {파일 이름}
  • 특정 파일을 Staging area로 이동시키는 명령어
    • 파일을 스테이징한다고 표현함
git add .
  • 현재 디렉토리 내의 모든 파일을 스테이징하는 명령어

git init : Git 초기화

  • 특정 파일을 Git이 관리하도록 하기 위해 해당 파일이 존재하는 위치에서 git init 명령어를 입력

기본 브랜치 이름 변경

git config --global init.defaultBranch {변경할 브랜치 이름}
  • git init을 입력했을 때 생성되는 기본 브랜치의 이름을 {변경할 브랜치 이름}으로 변경

현재 위치하는 브랜치 이름 변경

git branch -m {변경할 브랜치 이름}

.git 디렉토리

  • git init을 입력하면 .git 디렉토리가 생성됨
    • Git이 파일을 관리할 때 필요한 모든 정보들을 .git 디렉토리에 보관
    • .git 디렉토리를 삭제하면 Git 명령어가 제대로 동작하지 않으므로, .git 디렉토리는 감춰진 상태로 존재

git status : 파일들의 상태 확인

파일의 상태

  • Tracked / Untracked로 나뉨
    • Tracked는 다시 Unmodified, Modified, Staged 세 가지 상태로 나뉨

Untracked

  • Git에 의해 파일이 상태가 추적되고 있지 않은 상태
  • Git이 파일의 내용 변경을 감지하지 못함
  • Commit 과정을 거치면 Tracked 상태로 바뀜

Tracked

  • 파일의 상태가 추적되고 있는 상태
  • Git이 파이르이 변경 내용을 감지
  1. Unmodified
    • 파일의 수정이 Git에 의해 감지되지 않은 상태
  2. Modified
    • 파일의 수정이 Git에 의해 감지된 상태
  3. Staged
    • 파일이 Staging area에 존재하는 상태
      • Commit을 해야 Tracked 상태로 변경될 수 있지만 예외적으로 Commit을 하지 않은 파일도 Staged 상태를 가질 수도 있음

git commit : Local Repository에 저장 및 버전 기록

  • commit
    • Local Repository에 파일을 저장하는 행위
    • 동시에 파일의 버전을 기록
    • commit을 할 때에는 버전 구분을 위해 커밋 메시지를 입력
git commit
  • 커밋하는 명령어
  • 입력 후에는 커밋 메시지 입력을 위한 텍스트 편집기 창이 나타남
git commit -m "커밋메시지"
  • 커밋 메시지를 작성하여 커밋하는 명령어
  • commit과 관련한 명령어
    • git log
      • commit 내역 확인

git push : Remote Repository로 업로드

  • Remote Repository로 업로드한 후에는 온라인 저장소에 작업물을 백업하고 다른 사람과 공유할 수 있음
  • 온라인에 업로드를 위한 과정
    1. Remote Repository 생성
    2. Remote Repository와 Local Repository 연결
    3. 업로드

git remote : Remote Repository와 Local Repository 연결

git remote --v
  • 명령어를 입력한 위치의 Local Repository와 연결된 Remote Repository가 있는지 확인하는 명령어
git remote add {원격 저장소 별칭} {원격 저장소 URL}
  • 명령어를 입력한 위치의 Local Repository에 Remote Repository를 연결하는 명령어
git remote rm {원격 저장소 별칭}
  • 연결한 Remote Repository를 연결 해제할 경우 사용하는 명령어

git push : 작업물 업로드

  • Push
    • 작업물을 Remote Repository에 업로드하는 행위
git push {원격 저장소 별칭} {브랜치 이름}
  • 원격 저장소의 브랜치에 작업물을 업로드하는 명령어

git clone : Remote Repository의 코드를 로컬로 복사

git clone {원격 저장소 URL}
  • Remote Repository의 코드를 로컬로 복사해오면서 해당 Remote Repository와 자동으로 연결을 맺어주는 명령어
  • git init을 별도로 하지 않아도 .git 디렉토리가 생성됨

브랜치와 관련된 명령어

git branch {브랜치명}
  • 브랜치를 생성하는 명령어
git branch -D {브랜치명}
  • 브랜치를 삭제하는 명령어
  • D 옵션을 통해 branch 삭제
git branch -m {브랜치명} {새로운 브랜치명}
  • 브랜치 이름을 변경하는 명령어
git checkout {브랜치명}
  • 다른 브랜치로 이동할 때 사용하는 명령어
git checkout -b {새로운 브랜치명}
  • branch 생성 및 해당 branch로 이동하는 명령어
    • branch 생성 및 체크아웃을 한 번에 하는 명령어
git branch
  • 현재 등록된 브랜치를 확인하는 명령어
git branch -v
  • 등록된 브랜치의 상세한 정보를 확인하는 명령어

git merge : 병합

  • 병합에는 두 가지가 존재
  1. 3-ways merge
    • 서로 다른 두 commit을 가진 branch가 하나로 병합하는 과정에서 두 branch가 양쪽의 이력을 그대로 보존하고자 병합 commit을 만들면서 병합
  2. Fast-forward merge
    • 한쪽 branch에서만 일어난 변경사항을 다른 branch로 병합하는 방식
git merge {브랜치명}
  • 현재 위치한 브랜치에 입력한 브랜치의 내용을 병합할 때 사용하는 명령어
profile
자바, 웹 개발을 열심히 공부하고 있습니다!

0개의 댓글