2 minute read

Git

​ 소스 코드 변경사항을 효율적으로 관리하기 위해 개발된 ‘분산형 버전 관리 시스템 도구’이다.

Git을 사용하는 이유

​ 버전 관리라는것 자체가 각 버전별로 변경된 이력들을 저장하고 관리하는 작업을 말한다. 다시 이전버전으로 돌아가야 하는 상황이 발생했을 때 이전 버 전이 기록되어 있으니 되돌아가는것이 용이하다. 변경사항을 저장할 때는 변경된 사항을 꼭 작성해야하는데, 누가 어떤 파일을 추가, 수정, 삭제했는지 확인이 가능하다.

​ 협업할때도 Git으로 관리되는 파일은 Github, GitLab, Bitbucket 등의 여러 가지 원격 저장소를 이용해서 백업과 협업을 할 수 있다.

용어 정리

  1. commit

​ : 깃에 데이터가 저장되어 온 기록(파일 추가, 변경 등)을 남기는 행위

​ 변경한 시간 순서대로 저장

​ 영문과 숫자로 이루어진 40자리 이름으로 각 커밋 구분

  1. repository

​ : 저장소

​ 2-1) Remote Repository (원격저장소)

​ : 원격 저장소 서버에서 관리 (for 협업)

​ 2-2) Local Repository (로컬저장소)

​ : 개인 컴퓨터 서버에 저장 (for 개인)

  1. Head

​ : 현재 커밋한 소스코드

  1. Branch

​ : 코드를 여러개로 복사한 후, 이전의 코드와는 독립적으로 개발하는 것

  1. Push

​ : 로컬 저장소의 수정사항을 원격 저장소에 업로드 하는 행위

  1. Pull

​ : 원격 저장소에서 로컬 저장소로 다운로드 하는 행위

  1. Work Tree

​ : 폴더

  1. Index

​ : 커밋을 실행하기 전의 저장소와 작업 트리에 존재하는 공간으로, 모든 변경사항이 포함된 파일들의 집합.

​ 인덱스에 존재하는 파일 중 선택적으로 commit

Git 명령어

분류 명령어 내용 설명
<새로운 저장소="" 생성=""> $ git init .git 하위 디렉토리 생성 (폴더를 만든 후, 그 안에서 명령 실행 => 새로운 git저장소 생성)
<저장소 복제/다운로드(clone)> $ git clone https:.. URL 기존 소스 코드 다운로드/복제
  $ git clone /로컬/저장소/경로 로컬 저장소 복제
  $ git clone 사용자명@호스트:/원격/저장소/경로 원격 서버 저장소 복제
<추가 및 확정(commit)> **$ git add <파일명>** **$ git add \*** 커밋에 단일 파일의 변경 사항을 포함 (인덱스에 추가된 상태)
  $ git add -A 커밋에 파일의 변경 사항을 한번에 모두 포함
  $ git commit -m “커밋 메시지” 커밋 생성 (실제 변경사항 확정)
  $ git status 파일 상태 확인
  $ git reset HEAD^ 이전 커밋 내용으로 수정
  **$ git restore <파일명>** 커밋 혹은 staged 되지 않은 변경 사항 폐기
<가지(branch)치기 작업> $ git branch 브랜치 목록
  **$ git branch <브랜치이름>** 새 브랜치 생성 (local로 만듦)
  **$ git checkout -b <브랜치이름>** 브랜치 생성 & 이동
  $ git checkout master master branch로 되돌아 옴
  **$ git branch -d <브랜치이름>** 브랜치 삭제
  **$ git push origin <브랜치이름>** 만든 브랜치를 원격 서버에 전송
  **$ git push -u < remote > <브랜치이름>** 새 브랜치를 원격 저장소로 push
  **$ git pull < remote > <브랜치이름>** 원격에 저장된 git 프로젝트의 현재 상태를 다운받고 + 현재 위치한 브랜치로 병합
<변경 사항 발행(push)> $ git push origin master 변경사항 원격 서버에 업로드
  **$ git push < remote > <브랜치이름>** 커밋을 원격 서버에 업로드
  **$ git push -u < remote > <브랜치이름>** 커밋을 원격 서버에 업로드
  **$ git remote add origin <등록된 원격="" 서버="" 주소="">** 클라우드 주소 등록 및 발행 (git에게 새로운 원격 서버 주소 알림)
  **$ git remote remove <등록된 클라우드="" 주소="">** 클라우드 주소 삭제
<갱신 및 병합(merge)> $ git pull 원격 저장소의 변경 내용이 현재 디렉토리에 가져와지고(fetch) 병합(merge)됨
  **$ git merge <다른 브랜치이름="">** 현재 브랜치에 다른 브랜치의 수정사항 병합
  **$ git add <파일명>** 각 파일을 병합할 수 있음
  **$ git diff <브랜치이름><다른 브랜치이름="">** 변경 내용 merge 전에 바뀐 내용을 비교할 수 있음
<태그tag 작업=""> $ git log 현재 위치한 브랜치 커밋 내용 확인 및 식별자 부여됨
<로컬 변경사항="" return="" 작업=""> **$ git checkout – <파일명>** 로컬의 변경 사항을 변경 전으로 되돌림
  $ git fetch origin 원격에 저장된 git프로젝트의 현 상태를 다운로드
     

분께서 리눅스와 깃의 개발자 리누스 토르발즈님 되시겠다. 그냥 면상 얼굴이 보고싶어서 넣어봤다.

캬아아악 퉷

깃은 추가로 공부를 더 해보자

인프런 깃&깃허브 강의

Pro Git Document

Updated: