본문 바로가기
넓고 얕은 CS 지식

Git과 명령어

by 황원용 2022. 8. 29.
728x90

Git

 Linux OS를 만든 리누스 토르발즈가 만든 프로그램이다. Linux는 오픈 소스 방식의 운영체제로, 세상에 등장한 이후부터 약 26년 간 1만 명이 넘는 개발자들에 의해 2천만 줄이 넘는 소스코드가 작성되었다. Linux의 개발자인 리누스 토르발즈는 Linux의 발전에 있어 기존의 오픈 소스 방식에 큰 불편함을 느끼고 있었다. 그는 이러한 불편함을 줄이고 작업 환경을 개선하기 위해 Git이라는 프로그램을 출시한다.

 

GIt의 기능

 Git은 파일을 관리해주는 프로그램이며 크게 버전관리, 백업, 협업(공유 및 합병)의 기능을 가지고 있다.

 

Github

 Git이 로컬에서 버전을 관리해주는 프로그램이라면 Github는 원격 저장소의 기능을 제공해주는 서비스 중 하나이다. 쉽게 이야기하면, Git이 설치되어있는 클라우드 저장소로 Github를 통해 온라인에서 버전 관리 및 백업, 협업자들과의 공유 기능을 가능하게 한다.

 

Github의 워크플로우

<Github WorkFlow Overview>

 

Fork

 예를 들면, Github 내의 A라는 프로젝트에 Contribute를 하려고 한다. 이때 자신의 계정(Origin Repasitory)에 A 프로젝트의 Remote Repository를 가지고 오는 기능이 Fork이다.

 

Git Clone <레파지토리 주소>

 원격 저장소의 파일을 로컬 저장소로 복사하는 기능

 

git status

 로컬 저장소에 복사된 디렉토리의 commit 전 상태를 표시한다. staging area와 untracked list를 확인할 수 있다.

 

<빨간색 : staging area에는 들어가지 않음 / 초록색 staging area에 들어감>

git restore

 add, tracked 된 내용을 취소하는 기능
 참고로 git 2.23부터 git checkout -- <파일명>은 git restore <파일명>으로, git reset HEAD <파일명>은 git restore --staged <파일명>으로 변경되었다.
 git status를 입력하면 1차적으로 변경 여부를 확인할 수 있다. 그리고 변경 사항이 staging area에 반영되었는지 색을 통해 확인한다. 빨간색은 변경 사항이 반영되지 않았다는 의미이므로, git add <파일명>이나 git add .(전체 추가)로 반영할 수 있다. 또한, 변경 사항을 git restore <파일명>으로 취소할 수 있다.
 초록색은 변경사항이 이미 staging area에 반영되었다는 의미이며, 최종적으로 commit을 통해 로컬 저장소에도 변경사항을 반영할 수 있다. 또한, git restore --staged <파일명>으로 unstage 할 수 있다.

 

<Git의 세 가지 영역>

 

git add

 Work space에서 staging area로 옮기는 기능

 

git commit

 staging area에서 로컬 저장소로 옮기는 기능으로, 언제, 누가, 어떻게, 어떤 사항을 변경했는지 기록할 수 있다. git commit -m "메시지 내용"이 기본 명령어이며, 한 번 터미널에서 commit을 하면 추가 변경 사항이 있을 때에 다시 add를 할 필요 없이 commit -am "메시지 내용"으로 add와 commit을 한 번에 할 수 있다. 

 

git reset

 Commit을 취소하는 기능

--soft : commit 하기 전인 staging area로 돌아감

--mixed(default) : 기본값이며, add하기 전인 work space로 돌아감

--hard : commit된 파일 중에 tracked 된 파일을 work space에서 삭제

HEAD_<숫자> : 숫자만큼 commit 취소

HEAD^ : 가장 최근의 commit을 취소

 

git log

현재까지 commit된 내역을 터미널 창에서 확인 가능, 'q'를 누르면 log창 종료.

 

Pull Request

내가 Push한 변경 사항을 다른 사람들에게 알림

 

git init

내 컴퓨터에 직접 만든 디렉터리를 버전 관리하기 위해 Git Repository로 변환하는 기능

 

git remote add origin <Repository 주소>

나의 로컬 저장소와 나의 origin 저장소를 연결시킴

 

git remote add <상대방 네임 (ex. pair)> <Repository 주소>

협업자의 로컬 저장소와 나의 origin 저장소를 연결시킴

 

git push <origin> <branch 명>

commit 된 brach의 변경 사항을 origin repository에 업로드함

 

git pull <협업자 네이밍> <branch 명>

현재 로컬 저장소에 협업자의 Remote Repository를 가져옴
git clone과 git pull의 차이
※ git clone은 리모트 설정을 자동으로 해주기 때문에 맨 처음 다운로드를 할 때 사용하고,  git pull은 리모트 설정이 이미 되어 있는 경우에 업데이트 사항 등을 다운로드 할 떄 사용한다.

 

git remote -v

현재 로컬 저장소와 연결된 모든 Remote Repository 목록을 확인

<origin : 내 Local Repository와 연결된 Remote Repository / pair : 내 Local Repository와 연결된 상대방 Remote Repository>

(fetch) : pull 연결 주소
(push) : push 연결 주소 

 

 

 

 

728x90