Git & Github

Junyoung Lee·2021년 6월 17일
0


이번엔 Git과 Github에 대해 적어보려고 합니다!


Git?

Git은 VCS(분산 버전 관리 시스템)중에 하나로 VCS란 동일한 정보에 대해 여러 버전을 관리할 수 있는 시스템을 말함
Git을 사용하는 이유는 프로젝트 변경 사항을 기록하거나 진행하다 무언가 잘못되었을 때 복구, 같은 프로젝트에 다수의 개발자가 참여할 경우 각자가 수정한 부분을 전체가 동기화 하는 과정을 자동화 하기 위해 등 여러 이유 때문에 필수적으로 사용해야 한다


버전 관리를 하는 이유?

  1. 수정할 때 마다 파일을 새로 만들면 관리가 힘듦
  2. 언제든 이전 버전의 코드로 돌아갈 수 있기 때문

    코드를 추가, 수정하거나 삭제했을 때 문제가 생겼다면 이전에 문제 없는 버전으로 되돌려서 복구가 가능함

  3. 프로젝트를 수정한 이력을 남기기 위해

    수정을 누가 한 건지 확인하고 문제가 생겼다면 코드에 대해 마지막 수정자가 잘 알 것이기 때문에 확인하여 문제를 효과적으로 해결할 수 있음

  4. 하나의 프로젝트를 두고 여러명의 개발자들이 협업할 수 있기 때문

    다수의 개발자가 각자가 수정한 부분을 전체가 동기화 하는 과정을 자동화가 가능


Git Repositories

Git repository는 Git으로 관리하는 프로젝트 저장소이고 크게 두 가지 종류가 있다

  • Local repository - 말 그대로 Local. 본인의 컴퓨터에 저장된 로컬 버전의 프로젝트 저장소
  • Remote repository - Local repository와는 달리 로컬 컴퓨터가 아닌 외부 (원격 서버)
    버전의 Project 저장소
    • Project 팀과 함께 작업 할 때 유용하며 Project 코드 공유, 다른 사람의 코드를 확인할 수도 있음
    • Local 버전의 Project와 병합 및 변경사항을 적용할 수 있음

Commit

  • Git에서의 Commit 이란 프로젝트의 현재 상태를 나타내는 체크포인트 또는 스냅샷으로 생각할 수 있음
  • Commit을 남기는 시점은 특정 내용, 기능을 추가한 후 또는 수정 사항을 적용한 후 정도로 들 수 있음
  • 하나의 커밋이 더해질 때는 이전 커밋에서 변경된 사항만 추가하면 되기 때문에 커밋은 서로 연결된 체인 구조를 형성함
    • 이 구조에서는 이전 Commit이 훼손되면 다음 Commit도 망가짐

Github?

Github란 Git저장소 호스팅을 지원하는 사이트이며 Git을 사용한 프로젝트들의 저장소이다
무료 호스팅을 지원하며 Github는 개발자들의 Social Network으로도 사용된다
Git은 Text로 이루어진 반면 Github는 GUI를 지원하기 때문에 좀 더 직관적으로 버전 관리가 가능하다


Git 간단한 명령어 정리

git init - .git폴더가 생기며 현재 저장소에 대한 모든 변경사항을 추적 & 관리하게 됨

git status - 어떤 파일이 변경되었는지, 어떤 파일이 추가되었는지 보여주고 해당 명령어를 통해 Git으로 관리되고 있지 않던 파일들이 있다면 해당 파일들을 staging area로 추가해줄 수 있음

git add - 파일을 staging area로 추가해줄 수 있고 .을 통해 project directory내에 모든 파일과 폴더를 staging area에 추가할 수 있다.

git commit -m "Commit message" - staging area에 있는 파일들을 Commit 해줄 수 있음

git log - 각 Commit에 대한 자세한 정보를 담고 있음

git checkout <commit-hash> - 특정 Commit 시점의 코드로 돌아가고 싶을때 사용하며 git log에 보이는 commit-hash값을 넣으면 됨

git remote add <저장소 주소 대신 사용할 이름> <저장소 주소> - Remote repository에 연결시킬 때 사용

git push origin main - remote repositorymain 브랜치에 코드 업로드


Ref.
https://ko.wikipedia.org/wiki/%EB%B2%84%EC%A0%84_%EA%B4%80%EB%A6%AC
https://ko.wikipedia.org/wiki/%EA%B9%83%ED%97%88%EB%B8%8C
https://nanite.tistory.com/39

profile
🎹재즈를 사랑하는 백엔드 개발자 이준영입니다🎷

0개의 댓글