Linux/Git

[Git] Git & Version Control System

디스페어 2021. 12. 26.

버전 관리 시스템 (Version Control System)

  • 이전에 작성한 내용을 보존해 주는 시스템으로 편집 전 상태로 되돌리고 싶을 때 유용하며 Git이 대표적
  • 파일의 변경 이력을 저장할 수 있고 어떤 변경 사항이 발생했는지 알 수 있음
  • 변경 사항 저장 시 어떤 사항이 변경되었는지 코멘트를 작성을 해야 누가 어떤 파일을 추가, 수정, 삭제했는지 확인 가능

 

 

Git이란

1. Git

  • Git : 소스 코드 기록을 관리하고 추적할 수 있는 분산형 버전 관리 시스템으로 변경 사항을 하이라이트로 확인 가능
  • 스냅샷 : 특정 시점에 생성된 백업 복사본
  • commit : 변경사항에 대한 스냅샷을 만들어 주는 작업을 수행, 이를 통해 이전 기록들에 대한 추적이 가능
  • Git repository : Git으로 관리되는 폴더

 

2. Git repository

Remote Repository

  • 원격 온라인 서버 상의 저장소로 작업한 코드를 업로드해 공유하는 공간
  • Fork : 다른 사람이 Remote Repository에 올려놓은 소스 코드를 내 Remote Repository Repository로 가져오는 작업
  • Pull : Remote Repository에서 변경 사항이 있을 때 Local Repository 로 가져오는 작업

 

Local Repository

  • 내 컴퓨터의 저장소로 내가 작업을 하는 공간
  • Clone : Remote Repository에 있는 소스 코드를 Local Repository로 가져오는 작업
  • Push : 변경된 내용을 commit을 통해 저장해 준 뒤 Local Repository에 기록해 놓은 commit을 Remote Repository로 업로드

 

3. Local Repository의 3가지 영역

  • Untracked area는 : Git이 관리하고 있지 않은 영역
  • Tracked area : Unmodified, Modified, Staged
    *Tracked area에 들어온 파일들만 Git의 관리를 받을 수 있음

 

Unmodified

  • 기존에 Commit했던 파일을 수정하지 않은 상태

 

Modified

  • 기존에 Commit했던 파일을 수정한 상태

 

Staged

  • commit이 가능한 상태로 수정한 파일을 commit하기 위해서는 staged area에 add하는 작업이 필요

 

 

Github

  • Github : Git Repository를 관리할 수 있는 클라우드 기반 서비스
  • Git으로 버전을 관리하는 폴더에 대해 Github을 통해 여러 사람들이 공유하고 접근할 수 있음
  • Github에서 Code Review 등을 통해 협업이 가능
  • 수많은 프로젝트의 오픈 소스들이 GitHub로부터 호스팅되고 있어서, 누구든 자유롭게 기여 가능
    *오픈 소스 : 소스 코드가 공개된 소프트웨어로 어떤 수정사항이 있는지 commit 기록을 통해서 확인 가능
  • Pull request : 내가 제안한 코드 변경사항에 대해 반영 여부를 요청하는 작업
    *Push를 완료한 후 GitHub를 통해 Pull request

 

 

Git 명령어

Fork
#GitHub 다른 계정의 Remote Repository를 내 계정으로 가지고 옴

git clone <레파지토리 주소>
#원격 Repository를 로컬로 복사

git status
#로컬로 복사해 온 디렉토리의 commit 되기 전 상태 표시
#로컬의 staging, untracked files 확인 가능
#같은 부분을 변경한 내용이 존재해 자동병합 할 수 없는 경우 충돌 확인

git restore <파일명>
#처음 clone 받은 상태로 되돌림
#commit 혹은 staged 되지 않은 변경 사항 폐기

git add <파일명>
git add .
#commit 하기 전 해줘야 됨
#Untracked files를 Staging area로 추가해서 Git 관리하에 둠

git commit -m '커밋 메세지'
#수정 작업이 끝났을 때 변경 사항을 저장

git reset HEAD^
#Local 에서 commit 한 가장 최신의 내용을 취소

git push <origin> <branch>
#Local 에서 변경, commit 된 사항을 Remote Repository에 업로드

git log
#현재까지 commit 된 내역들을 터미널 창에서 확인

git init
#기존 디렉토리를 Git Repository로 변환

git remote add origin <Repository 주소>
#init한 디렉토리에 GitHub Remote Repository 연결



git remote add <name> <Repository 주소>
#나의 Local Repository에 상대방의 Remote Repository 연결

git remote -v
#현재의 Local Repository와 모든 Remote Repository 목록 확인

git pull <shortname> <branch>
#상대방의 Remote Repository의 해당 branch 내용을 나의 Local Repository로 가져옴

 

 

Reference

git reset

반응형

댓글