Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

기록

01_Git 본문

공부/Git

01_Git

aoieuo 2020. 9. 30. 16:57

Git의 기본

Git: 소스코드를 효과적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템'

  • Git에서는 소스 코드가 변경된 이력을 쉽게 확인, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있다.

  • 또 내가 올리려는 파일이 누군가 편집한 내용과 충돌하는데 서버에 업로드 하려 한다면 경고메시지가 발생한다. 덮어씌우기 실수를 방지해주는 것.


이력을 관리하는 저장소(Repository)

저장소(repository)란 말 그대로 파일이나 폴더를 저장해 두는 곳이다.

그런데 Git 저장소가 제공하는 좋은 점 중 하나는 파일이 변경 이력 별로 구분되어 저장된다는 점이다. 비슷한 파일이라도 실제 내용 일부 문구가 서로 다르면 다른 파일로 인식하기 때문에 파일을 변경 사항 별로 구분해 저장할 수 있다.

원격 저장소와 로컬 저장소

Git은 원격 저장소와 로컬 저장소 두 종류의 저장소를 제공.

  • 원격 저장소(Remote Repository): 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소.
  • 로컬 저장소(Local Repository): 내 PC에 파일이 저장되는 개인 전용 저장소.

평소에는 내 PC의 로컬 저장소에서 작업하다가 작업한 내용을 공개하고 싶을 때에 원격 저장소에 업로드한다. 물론 원격 저장소에서 다른 사람이 작업한 파일을 로컬 저장소로 가져올 수도 있다.

저장소 만들기

내 컴퓨터에 로컬 저장소를 만드는 방법은 두 가지가 있다.

  1. 새로운 저장소 만들기(init)
  2. 원격 저장소를 복사(clone)

변경을 기록하는 커밋(Commit)

파일 및 폴더의 추가/변경 사항을 저장소에 기록하려면 '커밋'을 해줘야한다.

커밋을 하면 이전 커밋 상태부터 현재 상태까지의 변경 이력이 기록된 커밋(리비전)이 만들어진다.

커밋은

  • 시간순으로
  • 영문/숫자로 이루어진 40자리 고유 이름으로

저장된다.

Tips

  • 버그 수정, 기능 추가 등 특별한 의미가 있는 업데이트를 작업 별로 구분해서 각각 커밋하면 나중에 이력을 보고 특정 변경 내용을 찾기 쉽다.

  • 커밋 메시지는 필수로 입력해야하며 이때 메시지는 명료하고 이해하기 쉬워야 한다.

    • Git에서 권장하는 메시지 형식:
    1번째 줄: 커밋 내의 변경 내용을 요약
    2번째 줄: 빈 칸
    3번째 줄: 변경한 이유

작업 트리(Work Tree)와 인덱스(Index)

Git에서는 우리가 흔히 말하는 폴더를 '작업 트리'라고 부른다.

그리고 커밋을 실행하기 저느이 저장소와 작업 트리 사이에 존재하는 공간을 '인덱스'라고 한다.

이때, 인덱스에 등록되지 않은 파일은 커밋이 되지 않는다.

커밋 순서:

  1. 파일 수정
  2. 파일을 인덱스에 등록(stage)
  3. 인덱스에 등록된 파일을 저장소에 커밋

따라서 저장소에 변경사항을 기록하기 위해서는, 기록하고자하는 변경 사항들이 '인덱스'에 존재해야 한다.

(예를 들어, 10개의 파일을 수정했지만 그 중에 7개만 저장소에 공개하고 싶을 때를 생각해 보자. 10개의 파일 중 7개를 선택하는 작업이 바로 '인덱스에 등록'하는 것이다.)

인덱스라는 가상의 공간이 중간에 있는 덕분에 작업 트리 안에 있지만 커밋이 필요하지 않은 파일들은 제외할 수 있고, 내가 원하는 일부 변경 사항만을 골라 커밋할 수 있다.

'공부 > Git' 카테고리의 다른 글

05_Merge  (0) 2020.09.30
04_Remote  (0) 2020.09.30
03_Repository  (0) 2020.09.30
02_Commit  (0) 2020.09.30
Comments