Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
관리 메뉴

이열매의 메모장

Git 기초 본문

Git

Git 기초

이열매 2019. 10. 9. 18:59

버전 관리란?

: 파일 변화를 기록하고 특정 시점의 버전을 언제든 사용할 수 있게 하는 시스템

특징

  • 특정 시점의 버전을 복구하여 오류 복구 가능
  • 시간에 따른 수정 내용 비교에 따른 이슈 추적 가능

 

로컬 버전 관리

: 간단한 데이터베이스를 사용해서 개인 컴퓨터에서 파일의 변화를 관리

: 대표적으로 RCS가 있다.

  • 장점
    • 디렉토리로 파일을 복사하는 방식이므로 간단하다
  • 단점
    • 안정성이 낮음
      • 작업하던 디렉토리를 실수로 지울 경우
      • 작업하던 파일을 잘못 고칠 경우
      • 로컬 컴퓨터가 고장날 경우

로컬 버전 관리

 

 

중앙집중식 버전 관리

: 중앙 서버에서 파일의 변화를 관리

: 대표적으로 Subversion(SVN) 이 있다.

  • 장점
    • 다수와 공동 작업 가능
    • 로컬 버전 관리에 비해 관리자가 통합하여 관리하므로 관리가 수월
  • 단점
    • 중앙 서버의 오류에 취약
    • 온라인 상태가 아닐 경우 버전 관리 불가 즉, 중앙 서버에 접근이 가능해야 버전 관리가 가능

 

중앙집중식 버전 관리

 

 

분산 버전 관리 시스템

: 중앙 원격 저장소 및 개인의 컴퓨터에서 파일의 변화를 관리

: 즉, 중앙에서도 파일과 히스토리를 관리하고 클라이언트에서도 저장소 및 히스토리를 전부 복제

: 대표적으로 Git이 있다.

 

특징

  • 오프라인 상태이더라도 버전 관리 가능
    • 개인의 로컬 데이터베이스에 저장 후 온라인 상태일 시 push하는 형식으로 관리 가능
  • 서버의 오류가 있어도 거의 완벽히 버전 및 히스토리 복구가 가능
    • 원격 저장소(master)의 깃 커밋 히스토리를 모두 복제(clone)하여 로컬에 브랜치를 생성하므로 마지막 복제 시점까지 복구 가능

 

분산 버전 관리 시스템

 

 

Git의 상태

  • 워킹 트리
    • 프로젝트의 특정 버전을 가져와 현재 작업 중인 공간
  • Staging Area
    • 워킹 트리에서의 명령어를 입력받았을 경우 특정 시점을 커밋할 수 있도록 스냅샷을 생성하는 공간
  • Git 디렉토리
    • Git 프로젝트의 메타데이터와 스냅샷을 저장            

 

 

 

Git 실습

  • 버전 확인
git --version

 

  • 해당 명령어에 대한 자세한 설명
git help [명령어]

 

  • 해당 명령어의 옵션 설명
git [명령어] -h

 

  • 현재 위치한 로컬 디렉토리에 Git 저장소 적용
git init

 

  • 다른 원격 저장소에서 끌어오기
git clone [원격 저장소 주소]

 

 

기본 명령어

현재 상태 확인

git status
  • 현재 브랜치 상태 확인
  • tracked / untracked 된 파일을 표시
  • tracked 상태인 파일 중에서 세부 상태 수정(M), 추가(A) 를 표시

현재 커밋에 파일 추가

git add [파일명]
  • 해당 파일을 staged 상태로 변경 즉, 해당 파일을 커밋할 내용에 추가

메세지와 더불어 커밋하기

git commit -m "커밋 메세지 내용"
  • 현재 tracked 중인 파일을 커밋
  • tracked 임에도 staged가 아닐 경우 알림 메세지를 보여준다
  • 변경 사항이 없을 경우에도 해당 알림 메세지를 띄운다

 

커밋에서 해당 파일 빼기

git reset HEAD [파일명]

커밋에서 해당 파일을 빼고 실제로 삭제

git rm [파일명]
  • tracked 중인 파일을 untracked 로 변환하고 실제 로컬 디렉토리에서도 파일을 삭제

해당 파일 이름을 변경하여 커밋에 저장하고 실제로 이름 변경

git mv
  • tracked 중인 파일을 이름을 바꾸고 실제 로컬 디렉토리에서도 파일 이름명 변경
  • 즉, 아래와 같은 과정을 한 명령어로 통합한다
mv [기존 파일명] [변경할 파일명]  // 로컬 디렉토리에서 파일명 변경
git rm [기존 파일명]  // git에서 tracked 중이던 이름 변경 전 파일을 삭제
git add [변경할 파일명]  // 변경된 파일을 git의 tracked 목록에 추가 및 staged로 상태 변경

 

직전 커밋 변경

git commit --amend

git commit --amend
  • 직전에 커밋한 내용을 수정
  • ex) 직전 커밋에 파일을 추가하고 싶을 경우, 커밋 메세지의 변경을 원할 경우

커밋 삭제

git reset HEAD  ^
  • 최종 커밋 기준 순차적으로 삭제
git reset HEAD-[삭제할 개수]
  • 최종 커밋 기준 입력한 개수만큼 삭제

 

HEAD 기준 커밋 지정

  • ~[이전 숫자]

    • HEAD에서 이전을 의미

  • ^[이후 숫자]

    • HEAD에서 앞을 의미

 

 

 

 

 

'Git' 카테고리의 다른 글

local에 이미 생성되어 있는 프로젝트 Github 에 올리기  (0) 2020.05.06
Comments