[TIL] git, github, gitlab

mmy789·2022년 4월 25일
0

TIL

목록 보기
1/1
post-thumbnail

[ Git ]

소스코드를 효율적으로 관리하기 위한 형상 관리 도구 중 하나로, 버전 관리 도구라고도 한다.

  • 소규모 프로젝트부터 대규모 프로젝트까지 모든 것을 빠르고 효율적으로 처리하도록 설계된 무료 오픈소스 버전 관리 시스템이다.
  • 배우기 쉽고, 매우 빠른 성능을 가지며 설치 공간이 매우 작다.

Git을 사용하는 이유는?

Git을 사용하는 목적은 크게 두 가지로 나뉜다.

1. 버전 관리

  • 버전 관리를 하면 코드의 변동 사항을 쉽게 확인할 수 있으며,
  • 특정 시점에 저장된 버전과 비교도 할 수 있고,
  • 특정 시점으로 코드를 돌릴 수도 있다.

2. 동시 협업

  • 여러 개발자들이 각 기능을 구현한 뒤 git을 이용하여 코드를 쉽게 합칠 수 있다.

💡 즉, git은 버전 관리와 동시 협업이 가능하도록 도와주는 도구이다!


[ Git과 GitHub, GitLab ]

GitHub

버전 관리 도구 Git을 기반으로 소스 코드를 호스팅하고, 협업 지원 기능들을 지원하는 마이크로소프트의 웹 서비스이다.

  • 코드 호스팅 서비스이다.
  • GitHub를 통해 내 코드 뿐만 아니라 다른 사람들의 코드도 볼 수 있다.
  • Git을 웹에서 보다 편하게 쓸 수 있도록 만든 도구이다.

📌 Git vs GitHub

  • Git은 버전 관리하는 프로그램
  • GitHub는 Git으로 관리하는 프로젝트를 올려둘 수 있는 사이트로, 원격 저장소를 대신 제공해주는 서비스라고 할 수 있다.

GitLab

개발자가 코드를 모니터링, 테스트 및 배포하는 데 도움이 되는 클라우드 기반 Git 및 DevOps 플랫폼이다.

  • 지속적인 통합, 보안, 앱 배포 도구와 같은 광범위한 DevOps 기능을 제공한다.
  • 자체 호스팅 Git 리포지토리 관리 시스템으로, 사용자 코드를 비공개로 유지하고 코드 변경 사항을 쉽게 배포할 수 있다.
  • 소프트웨어 개발 수명 주기를 완료하기 위한 협업 워크플로를 간소화할 수 있는 다양한 관리 기능을 제공한다.

GitHub vs GitLab

📌 GitLab과 GitHub 기능 커버리지

  • GitLab은 CI/CD 및 DevOps 워크플로가 내장되어 있지만, GitHub는 직접 통합해야 한다.
    • 일반적으로 GitHub 사용자는 Jenkins, CircleCI 또는 TravisCI와 같은 타사 CI 프로그램을 사용한다.
  • GitHub는 속도를 최우선으로 하는 반면 GitLab은 안정성에 중점을 둔다.


[ Git의 기본 개념 ]

1. 저장소

Git은 크게 원격 저장소로컬 저장소, 2가지 저장소를 가지고 있다.

  • 원격 저장소(Remote Repository): 원격 서버에 있는 저장소
  • 로컬 저장소(Local Repository): 각각의 개발자들이 작업하는 본인의 PC 그 자체


2. 로컬 저장소

Git에 있는 로컬 저장소는 다시 크게 세 개의 영역으로 나뉜다. (물리적인 영역이 아닌 논리적인 영역)

📌 작업 디렉토리 (Working Directory)

  • pc에서 현재 작업 중인 디렉토리
  • Git에서 관리는 하지만 추적은 하지 않는다.

📌 스테이징 영역 (Staging Area)

  • 작업한 내용이 올라가는 임시 저장 영역
  • Git에 의해 변경점이 추적/관리되는 영역
  • 커밋을 준비하는 영역

📌 로컬 저장소 (Local Repository)

  • 커밋들이 영구적으로 저장되는 영역
  • 원격 저장소로부터 clone한 커밋들이 존재하는 영역

3. Git 기본 플로우 (로컬 저장소 내부)

  • 원격 저장소의 공동의 소스코드를 다운로드해서 (clone)
  • 작업 디렉토리에서 작업한 내용을
  • 스테이징 영역에 추가한 후 (add)
  • 의미있는 변경점이 쌓이면
  • 최종적으로는 커밋을 만들어 (commit)
  • 로컬 저장소에 영구적으로 저장한다.

📌 커밋 (Commit)

  • Git에서 가장 의미있는 변경의 단위
  • "커밋하다" - 변경점을 로컬 저장소로 저장하는 과정

4. Git 협업

📌 pull

  • 원격 저장소에 있는 다른 개발자들의 커밋을 받아온다.

📌 push

  • 로컬 저장소에서 만든 커밋을 원격 저장소로 업로드한다.


[ Git 명령어 정리 ]

  • git status: 현재 폴더 내 파일의 상태 확인
  • git log: 커밋의 히스토리 확인
  • git add [파일이름]: 파일이름에 해당하는 파일을 스테이징 영역에 추가
  • git commit: 로컬 저장소에 영구적으로 저장
  • git commit -m "메시지": 에디터 실행 없이 인라인으로 커밋 만드는 명령어
  • git diff: 작업 디렉토리에서 기존 코드 대비 변경점 확인
  • git commit --amend: 마지막으로 반영한 최신 커밋 메시지를 변경하고 싶을 때, 최신 커밋 수정 가능한 에디터를 실행
  • git revert 'commit ID': commit ID에 해당하는 커밋에서 수정한 코드를 취소하고, 새로운 버전의 커밋을 생성
  • git push [저장소별칭] [브랜치명]: 현재 프로젝트에 커밋된 내용을 저장소별칭 별칭을 갖는 원격 저장소로 내보냄

[ 참고자료 ]

https://dora-guide.com/gitlab-vs-github/
https://insight.infograb.net/blog/2021/02/05/gitlab-vs-github/https://www.zdnet.com/article/github-vs-gitlab-the-key-differences/
https://kinsta.com/blog/gitlab-vs-github/#gitlab-vs-github-the-basics
https://www.44bits.io/ko/keyword/github#%EA%B9%83%ED%97%88%EB%B8%8Cgithub%EB%9E%80

profile
Backend Developer

0개의 댓글