# Git, GitHub 개념 정리

hyejin choe·2020년 5월 12일
7
post-thumbnail

Git이란?

깃허브의 심장에서 작동되는 소프트웨어인 깃(Git: 재수없고 멍청한 놈, 자식!)
깃은 프로젝트의 어떤 부분도 겹쳐쓰지 않게 프로젝트의 변경을 관리하는 버전 분산 관리 시스템이다.

Git을 사용하는 이유?

한마디로 작업의 기록을 남겨서 수정 및 보완 등의 이력을 추적하기 위함이다. 이는 사람들과의 협업을 용이하게 한다.
ex) 파일의 수정을 여러 번 생성해서 파일명최종.txt, 파일명진짜최종.txt, 파일명진짜최종마지막.txt 식의 이름을 붙여 사용하지 않아도 된다는 편리함이 있음

GitHub란?

Git이 프로그램이라면 GitHub는 파일의 버전 관리를 다른 사람들이 볼 수 있게 정보 교환이 이루어지는 일종의 서버(홈페이지)라고 볼 수 있다.

GitHub을 사용하는 이유?

협업을 하고 소스에 대한 이력관리를 하고 소셜코딩을 할 수 있음.

다른 사람들이 개발한 코드를 볼 수 있고, 진행되고 있는 프로젝트에 함께 참여하며 수정 및 보완 작업을 통해 협업할 수 있음 (위에 설명된 fork,pull request,merge를 통해)

Git과 GitHub관련 개념 설명 http://jinfactory.tistory.com/187
노마드 코더의 5분 순삭 참고 영상 https://www.youtube.com/watch?v=YFNQwo7iTNc

기본 용어

커맨트 라인(Command Line) 깃 명령어를 입력할 때 사용하는 컴퓨터 프로그램. 맥에선 터미널이라고 한다. PC에선 기본적인 프로그램이 아니어서 처음엔 깃을 다운로드해야 한다(다음 섹션에서 다룰 것이다). 두 경우 모두 마우스를 사용하는 것이 아닌 프롬프트로 알려진 텍스트 기반 명령어를 입력한다.

저장소(Repository) 프로젝트가 거주(live)할 수 있는 디렉토리나 저장 공간. 내 컴퓨터 안의 로컬 폴더가 될 수도 있고, 깃허브나 다른 온라인 호스트의 저장 공간이 될 수도 있다. 저장소 안에 코드, 텍스트, 이미지 파일 등을 저장하고 이름 붙일 수 있다.

버전관리(Version Control) 기본적으로 깃이 서비스 되도록 고안된 목적. 워드 작업할 때, 저장하면 이전 파일 위에 겹쳐쓰거나 여러 버전으로 나누어 저장하는데 깃은 그럴 필요가 없다. 프로젝트 히스토리의 모든 시점의 “스냅샷”을 유지하므로 결코 잃어버리거나 겹쳐쓰지 않을 수 있다.

커밋(Commit) 깃에게 파워를 주는 명령이다. 커밋하면, 그 시점의 나의 저장소의 “스냅샷”을 찍어, 프로젝트를 이전의 어떠한 상태로든 재평가하거나 복원할 수 있는 체크포인트를 가질 수 있다.

브랜치(Branch) 여러 명이 하나의 프로젝트에서 깃 없이 작업하는 것이 얼마나 혼란스러울 것인가? 일반적으로, 작업자들은 메인 프로젝트의 브랜치를 따와서(branch off), 자신이 변경하고 싶은 자신만의 버전을 만든다. 작업을 끝낸 후, 프로젝트의 메인 디렉토리인 master에 브랜치를 다시 Merge한다.

주요 명령어

깃은 리눅스와 같은 큰 프로젝트를 염두에 두고 디자인되었기 때문에, 깃 명령어는 아주 많다. 그러나, 깃의 기본을 사용할 때에는 몇 개의 명령어만 알면된다. 모두 “git”이란 단어로 시작된다.

git init 깃 저장소를 초기화한다. 저장소나 디렉토리 안에서 이 명령을 실행하기 전까지는 그냥 일반 폴더이다. 이것을 입력한 후에야 추가적인 깃 명령어들을 줄 수 있다.

git config 'configure'의 준말, 처음에 깃을 설정할 때 가장 유용하다.

$ git config --global user.name "Hyejin Choe"
$ git config --global user.email hyejinchoe@example.com

(--global 옵션을 사용하지 않으면 해당 저장소만 유효한 설정됨)

git help 명령어를 잊어버렸다? 커맨드 라인에 이걸 타이핑하면 21개의 가장 많이 사용하는 깃 명령어들이 나타난다. 좀 더 자세하게 “git help init”이나 다른 용어를 타이핑하여 특정 깃 명령어를 사용하고 설정하는 법을 이해할 수도 있다.

git status 저장소 상태를 체크. 어떤 파일이 저장소 안에 있는지, 커밋이 필요한 변경사항이 있는지, 현재 저장소의 어떤 브랜치에서 작업하고 있는지 등을 볼 수 있다.

git add 이 명령이 저장소에 새 파일들을 추가하진 않는다. 대신, 깃이 새 파일들을 지켜보게 한다. 파일이 추가되면 깃의 저장소 “스냅샷”에 포함된다.

$ git add {file_name}

git commit 깃의 가장 중요한 명령어. 어떤 변경사항이라도 만든 후, 저장소의 “스냅샷”을 찍기 위해 이것을 입력한다.

git commit -m “여기에 이 코드들의 내용을 간략하게 적어주세요”

git branch 여러 협업자와 작업하고 자신만의 변경을 원한다? 이 명령어는 새로운 브랜치를 만들고 자신만의 변경사항과 파일 추가 등의 커밋 타임라인을 만든다. 당신의 제목이 명령어 다음에 온다. 새 브랜치를 'hyeja'로 부르고 싶으면, git branch hyeja

git checkout 현재 위치하고 있지 않은 저장소를 “체크아웃” 할 수 있다. 이것은 체크하길 원하는 저장소로 옮겨가게 해주는 탐색 명령이다. master 브랜치를 들여다 보고 싶으면 git checkout master를 사용할 수 있고, git checkout hyeja로 또 다른 브랜치를 들여다 볼 수 있다.

git merge 브랜치에서 작업을 끝내고, 모든 협업자가 볼 수 있는 master 브랜치로 병합할 수 있다. git merge hyeja는 'hyeja'브랜치에서 만든 모든 변경사항을 master로 추가한다.

git push 로컬 컴퓨터에서 작업하고 당신의 커밋을 깃허브에서 온라인으로도 볼 수 있기를 원한다면, 이 명령어로 깃허브에 변경사항을 push한다.

git pull 로컬 컴퓨터에서 작업할 때, 작업하고 있는 저장소의 최신 버전을 원하면, 이 명령어로 깃허브로부터 변경사항을 다운로드(pull)한다.

로컬 저장소 만들기

# MyProject 폴더 생성

mkdir ~/MyProject

# MyProject 폴더 이동

cd ~/MyProject

# git 초기화(이 디렉토리를 로컬 깃 저장소라고 컴퓨터에게 말해주기)

git init

# Readme.txt 파일 생성

touch Readme.txt

# git에 Readme.txt 추가

git add Readme.txt

# commit

git commit -m “Add Readme.txt”

# 이미 등록된 원격 저장소 주소 변경

git remote set-url <name> <newurl>

로컬 저장소와 깃허브 저장소 연결하기

git remote add origin https://github.com/gpwls320/My-project.git
profile
Technical Support Engineer ;D

0개의 댓글