Git & GitHub


Git

Git이란 파일의 히스토리를 관리해주는 분산형 버전 관리 시스템(Distributed Revision Control (System))이다.
'2023년 6월 9일, README.md의 파일이 수정되었습니다.'와 같은 변경 이력이 남는다.

파일의 히스토리를 왜 관리해야 할까?

  • 시스템에 장애가 발생했을 때 장애가 나기 이전 상태로 돌아갈 수 있다.

Github

Github란 클라우드 기반의 Git 저장소(Git이 관리하는 파일들) 호스팅 서비스이다.
다시 말해, Git의 관리 하에 있는 파일들을 클라우드에 업로드 하는 서비스이다. 간단하게 소스코드를 클라우드 서비스에 올려주는 것을 말한다.

Github 왜 사용해야 할까?

  • 컴퓨터가 망가진다면 컴퓨터에 저장되어 있는 소스코드가 복구가 될지 않될지 장담할 수 없다. Github에 소스코드를 업로드 해두었다면 컴퓨터가 망가지더라도 Github에 있는 소스코드를 다운받아서 사용할 수 있다.
  • 여러 명과 소스코드를 공유할 수 있다.

Repository(저장소)

Repository란 Git으로 관리하는 프로젝트 폴더를 의미한다. 다른 말로, 해당 폴더 아래에 있는 모든 파일들을 Git의 감사하에 넣어 초기화 과정을 거치게 되는데 그것을 repository라고 한다.
Git의 감사하에 관리하고 변경을 추척하겠다라는 것을 repository를 만든다라고 한다.

  • Initialize Repository : 내 컴퓨터에만 repository를 생성하겠다는 의미
  • Publish to GitHub : 내 컴퓨터와 Github에 repository를 생성하겠다는 의미
    • private : 나와 내가 허용한 사람만 repository에 접근 가능
    • public : 모든 사람에게 repository 접근 허용

Commit

Commit이란 Git이 코드의 변화를 기록하는 것이다.
다시 말해, 소스코드의 변경사항을 한 단위로 묶어 기록하는 것이다. 쉽게 생각하면, 타임라인을 만드는 것과 같다.

변경 사항의 3가지 상태

  • Working Directory : 수정했지만, 아직 commit되지 않은 상태
  • Staging Area : 수정된 파일을 다음 commit에 포함할 것을 표시한 상태(Staged Changes 해당되는 파일)
  • Repository : commit 된 상태

Origin = Remote Repository

Origin이란 Github에 업로드 된 레포지토리라는 의미이다.

  • Origin/Master : Origin, Github Repository에 변경 사항이 어디까지 업로드 되었있는지 표시
  • Master : 내 컴퓨터에 변경 되어 있는 사항 표시

Pull / Push

Pull / Push 모두 origin과 동기화하는 동작
Pull origin의 변경사항을 local에 다운로드 받아 오는 동작
Push란 local의 앞선 변경사항을 origin에 업로드 하는 동작

Branch

Branch란 소스코드의 복사본을 만드는 것이다. 특정 commit에서, 새로운 버전으로 분기하는 것이므로 완전히 독립적인 공간이다.

  • checkout : Branch 이동

Merge

Merge란 하나의 branch를 다른 branch에 합치는 것

Conflict

  • branch를 merge할 때, 같은 라인의 소스코드를 수정한 경우 발생
  • 둘 중 어느 branch의 수정사항을 받을지 결정해야 함
    • Accept Current Change : 현재 변경된 사항을 적용
    • Accept Incoming Change : 들어온 변경된 사항을 적용
    • Accept Both Changes : 변경사항 모두 적용
    • Compare Changes : 변경사항을 비교한다. 세부적으로 다른 사항을 알려줌

Branch/Merge 언제 사용할까?

공통의 코드베이스를 공유하면서, 효율적이고 독립적인 작업 환경이 필요할 때 사용한다.


본 후기는 유데미-스나이퍼팩토리 10주 완성 프로젝트캠프 학습 일지 후기로 작성 되었습니다.

profile
사용자 경험 향상과 지속적인 성장을 추구하는 프론트엔드 개발자 ʚȉɞ

0개의 댓글