jiho_bae
Go devlog
jiho_bae
전체 방문자
오늘
어제
  • 분류 전체보기 (158)
    • JavaScript (38)
      • theory (34)
      • vanilla (4)
    • HTML & CSS (2)
    • Browser (3)
    • CS (6)
      • linux (1)
      • shell (2)
      • compiler (2)
    • DS & Algorithm (87)
      • theory (5)
      • basic (7)
      • programmers (30)
      • baekjoon (45)
    • Design Pattern (2)
    • Error (4)
    • Git & Github (4)
    • Tools (1)
    • 부트캠프 (4)
    • Small Tips (2)
    • Java (3)
    • test (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • fetch 취소하기
  • 퀵정렬 자바스크립트
  • 자바스크립트 모듈 시스템
  • 자바스크립트 sort는 왜 그모양일까
  • 13460 javascript nodejs
  • 자바스크립트 커링
  • 계수정렬 자바스크립트
  • 리액트 프로젝트 디버깅하기
  • 깃 이전 커밋에서 새 브랜치 만들기
  • 외벽 점검 javascript
  • 자바스크립트 이벤트 위임
  • 백준 자바스크립트 입력 템플릿
  • 프로그래머스 숫자카드나누기 javascript
  • 자바스크립트 채팅방 스크롤
  • 억억단을 외우자 javascript
  • 자바스크립트 배열의 특수함
  • 백준 17406 nodeJS
  • safari invalid date error
  • 자바스크립트 비동기 마이크로 태스크 큐와 렌더링 과정
  • 덧칠하기 javascript
  • 25632 소수 부르기 게임
  • 1753 최단경로 javascript
  • 리코쳇 로봇 javascript
  • JavaScript
  • 가사 검색 자바스크립트
  • javascript use strict
  • safari Date format NaN
  • 카카오 코딩테스트 양궁대회 nodeJS
  • 대충만든자판 javascript
  • 병합정렬 자바스크립트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
jiho_bae

Go devlog

[git] 깃이란?
Git & Github

[git] 깃이란?

2021. 7. 24. 18:13

git

git은 버전 관리 시스템이다.

 

여기서 버전이란, 당신이 a.txt라는 파일을 저장, 수정, 복사, 백업 등등을 하는 모든 작업을 말한다.

 

만약 당신의 프로젝트를 git repository에 등록했다면, git은 그 프로젝트 안에 있는 모든 파일들을 트래킹한다.

 

git 트래킹 정보

트래킹 정보를 통해 개발자는 어떤 것이, 어디에서, 언제, 누가 바꿨는지 등등을 모두 알 수 있다.

 

또한 어떤 일이 일어났는지에 대한 모든 트래킹이 가능하기 때문에,

 

문제 상황 발생 시에는 파일의 history를 통해 그 전 시점(commit)으로 돌아갈 수 있다.

 

git은 어떤 파일들을 추적할 수 있는가

깃은 사용자가 추적하길 원하는 모든 것을 읽을 수 있다.

 

tmi)

사실 깃은 파일을 `Binary code`로 읽는다. (0, 1로 이루어진 코드를 의미한다.)

그래서 git은 0,1로 구성된 파일 내부의 차이점을 인식하고, 기억할 수 있다고 한다.

 

버전 관리 시스템?

중앙 서버에 A,B,C 컴퓨터가 연결된 상황이다.

 

이들은 모두 같은 버전을 유지하고자 노력한다.

어떻게 중앙 서버에 연결된 A,B,C 컴퓨터가 같은 버전을 유지할 수 있을까?

 

 

case 1. 중앙 서버에서 모든 것을 관리한다.

 

중앙 서버에서 버전을 관리하고 버전이 갱신되면 중앙 서버로부터 A,B,C 컴퓨터의 버전을 갱신한다.

 

이 경우에는 저장소(repository)가 서버에만 존재한다.

그러므로, 변경을 기록하고 싶다면 모두 서버에 기록해야 한다.

 

이 방식을 중앙 버전 관리 시스템 이라고 한다.

 

 

case 2. 중앙 서버에서도 버전을 관리하고, 로컬 컴퓨터에서도 관리한다.

 

중앙 서버와 A,B,C 컴퓨터 모두 버전을 관리한다.

 

그러므로 이 경우에는 A,B,C 컴퓨터 모두 저장소가 될 수 있다.

 

예를 들면,
컴퓨터 A에서 중앙 서버에 업데이트 내용을 반영하면,
컴퓨터 B에서 중앙 서버로부터 최신화킨다.
이로서 현재 버전, 파일들을 모두 컴퓨터 A와 동일하게 유지할 수 있다.

 

이와 같은 방식을 분산 버전 관리 시스템 이라고 한다.

 

git은 여기서 각 컴퓨터에서 버전을 관리할 수 있도록 돕는다.

 

즉, git의 버전 관리 능력 덕분에 A,B,C 컴퓨터 모두 저장소가 될 수 있다는 것이다.

 

git? github?의 관계

위에서, git은 개인 컴퓨터를 저장소처럼 사용할 수 있도록 돕는다고 했다.

 

그럼 중앙 서버 역할을 할 수 있는 저장소가 필요한데, 이 저장소의 역할을 github가 해준다.

 

깃허브를 통해 각자 다른 환경에 있는 개발자들은 협업을 할 수 있다.

 

flow

git을 통해 본인 컴퓨터에서 버전을 관리할 수 있고,
본인 컴퓨터에서 관리한 최신 버전으로 github를 갱신하면,
다른 개발자들이 github를 통해 중앙 서버에 있는 버전을 자신의 컴퓨터에 업데이트 할 수 있다.

 

참고한 사이트

https://medium.com/@psychet_learn/git-사용법-1강-git이란-무엇인가-340438d9a69f
https://crynut84.github.io/2015/06/10/introduction-to-git/
https://codevang.tistory.com/217

저작자표시 (새창열림)

'Git & Github' 카테고리의 다른 글

[Commit] 과거 커밋으로 돌아가서 새로운 브랜치(분기) 만들기  (0) 2022.06.07
[git] git 명령어  (0) 2021.07.24
[깃허브] 깃허브 처음 시작하기 / Github Desktop 어플 (Mac OS)  (2) 2021.04.27
    'Git & Github' 카테고리의 다른 글
    • [Commit] 과거 커밋으로 돌아가서 새로운 브랜치(분기) 만들기
    • [git] git 명령어
    • [깃허브] 깃허브 처음 시작하기 / Github Desktop 어플 (Mac OS)
    jiho_bae
    jiho_bae
    하루에 한 걸음씩

    티스토리툴바