본문 바로가기
IT

Github란 ??

by 쏘니헨리 2021. 9. 15.
728x90
반응형

깃허브란 ?

 

Github는 소프트웨어 개발 프로젝트를 위한 소스코드 관리 서비스입니다. 소스 코드를 열람하고 간단한 버그 관리,

SNS 기능까지 갖추고 있어 개발자에게 없어서는 안될 서비스 입니다. GitHub를 사용하여 버전 관리를 실시하고 있는 기업도 다수 있습니다. 

 

깃허브를 사용하기 위해서 커밋과 푸시는 꼭 알아 둬야 하는 개념 

 

커밋 (commit) : 파일을 추가하거나 변경 내용을 저장소에 저장하는 작업

푸시 (push) : 파일을 추가하거나 변경 내용을 원격 저장소에 업로드하는 작업 

 

사전 지식 2 : 로컬 저장소와 원격 저장소 

 

저장소는 파일이나 디렉토리를 저장하는 장소입니다. 변경 이력을 관리하고자하는 디렉토리 등을 

저장소의 관리하에 두는 것으로, 그 디렉토리에 있는 파일 등의 변경 내역을 기록 할 수 있다. 

 

저장소는 자신의 컴퓨터에 있는 "로컬 저장소"고 서버 등 네트워크에 있는 "원격 저장소"의 2개소에 있습니다.

기본적으로 로컬 저장소에서 작업을 수행하고 그 결과를 원격 저장소에 저장하게 됩니다. 

 

사전 지식 3 : 브랜치 

 

소프트웨어 개발은 현재 출시하고 있는 버전의 유지 보수를 하면서 새로운 기능 추가 및 버그 수정을 할 수 있습니다. 

이러한 병렬로 수행되는 여러 버전 관리를 위해 Github에는 브랜치라는 기능이 있습니다. 

 

지점은 역사의 흐름을 분기하여 기록해 나가는 것 입니다. 분기 한 지점은 다른 지점의 영향을 받지 않기 때문에

같은 저장소에서 각 개발을 해 나갈 수 있습니다.

 

GitHub 사용법 

 

1번의 작성은 처음 한번 하고 2번에서 5번 반복 ~ !! 

 

기본적으로 작은 작업 단위를 커밋하고 어느 정도 작업이 일단락했을때 푸시를 하는 것이 일반적 

커밋 작업이 알기 쉽게 커밋 메시지를 남겨두면 로그를 따라가는 때 도움이 됩니다.

 

1. Github에 저장소 작성 (git init) 또는 복제 (git clone)

2. 파일의 작성, 편집

3. 파일의 생성/변경/삭제를 git 인덱스에 추가 (git add)

4. 변경 결과를 로컬 저장소에 커밋 (git commit)

5. 로컬 저장소를 푸쉬해 원격 저장소에 반영 (git push)

 

mkdir : 새로운 디렉토리를 만드는 명령 

cd : 디렉토리 이동하는 명령 

git init : Git 저장소를 새로 만드는 명령 

 

파일의 생성 / 변경 /삭제 git 인덱스에 추가 (git add)

 

hello.html 저장소에 커밋할 준비를 하기 위한 변경 내용을 임시로 저장할 위치

 

변경 결과를 로컬 저장소에 커밋 (git commit)

 

다음으로 인덱스에 추가 된 파일 커밋, 커밋은 파일이나 디렉토리의 추가 또는 변경을 저장소에 기록하는 작업 

 

git commit -m "new file"

 

이제 저장소에 파일 추가가 기록되었습니다. 파일이 추가되어 있는지 확인 

 

git status 

 

원격 저장소에 반영하기 전에 원격 저장소 정보 추가 

 

로컬 저장소를 밀어 원격 저장소에 반영 (git push)

 

로컬 저장소의 변경 사항을 GitHub에 있는 원격 저장소에 반여앟기 위해 다음 명령을 실행

 

git push origin master

 

GitHub의 사용자 이름과 암호를 입력하면 GitHub에 푸시하고 원격 저장소에 반영할 수 있습니다. 

작업이 끝났으면 github.com 페이지로 가서 파일이 잘 푸쉬 됐는지 확인 

 

브랜치 사용 

 

사전 지식에서도 소개했지만 분기는 동시에 이루어지는 여러 버전 관리를 할 수 있는 구조 

 

- 브랜치 생성, 이동

- 브랜치에서의 개발 작업 

- 브랜치에 푸시 

- 브랜치에서 풀 

- 브랜치 병합 

- 브랜치 삭제 

 

브랜치의 생성, 이동 

 

우선 현재 브랜치 목록을 살펴 보자 

 

git branch

 

실행 결과는 다음과 같다.

 

* master 

 

현재 브랜치에는 "*"가 붙는다. 이는 브랜치가 master 것이고 현재 브랜치도 master 임을 나타내는 것입니다.

subdir01이라는 브랜치 생성 

 

git branch subdir01 

 

지점 이동은 checkout 명령 사용 

 

git checkout subdir01

 

지점 만들기 및 이동 다음 명령으로 정리 

 

git checkout -b subdir01 - 이동 명령어

 

git merge subdir01 - 브랜치 결과 병합

 

git status 

 

저장소 상태를 확인하기 위해 사용하는 명령어 

현재 브랜치의 이름과 추가,변경된 파일 및 디렉토리 목록 표시 

 

git add 

 

파일이나 디렉토리를 인덱스에 추가하는데 사용하는 명령어 

추가 할 때 [file_pattern]에는 파일 및 디렉토리 이름을 직접하고있는 외에 "*.txt"처럼 와일드카드로 여러 대상을 지정할 수도 있습니다. 

 

git add [file_pattern]

 

git commit 

 

인덱스에 추가 된 파일이나 폴더의 내용을 저장소에 쓸 때 사용하는 명령어입니다. 옵션을 지정하지 않고 

이 명령을 실행하면 커밋 메시지를 작성하는 편집기를 시작합니다. 

 

편집기는 각각 다르기 때문에 쉽게 메시지를 지정하려면 -m 옵션을 붙인 후 큰 따옴표 안에 있는 메시지를 지정합니다. 

또한 -a 옵션을 지정하면 변경된 파일을 검색하고 인덱스에 추가하는 작업도 동시에 실시합니다. 

 

git commit -am "A first commit"

 

git branch 

 

브랜치에 대해 다양한 작업을 수행하기 위해 사용하는 명령어 입니다. 아래와 같이 사용합니다.

 

git branch : 브랜치 만들기 

git branch : 브랜치 목록보기 

git branch -d : 지정한 브랜치를 삭제 

 

git checkout 

 

로컬 저장소의 브랜치를 전환 할 때 사용하는 명령어 입니다. 

 

git checkout 

 

git log 

 

로컬 저장소의 커밋 히스토리를 탐색하는데 사용하는 명령 입니다.

-n 옵션 내역보기 수를 지정할 수 있습니다. 

 

git log -n 10

 

git grep 

 

저장소의 파일 내용에서 검색하고자 할 때 사용하는 명령어 입니다.

특정 단어가 포함 된 파일을 검색하고 해당 파일의 어디에 단어가 포함되어 있는지를 확인할 수 있습니다.

 

git grep "검색 단어" 

 

git clone 

 

기존 원격 저장소를 로컬에 다운로드하기 위하여 사용하는 명령어 입니다.

예를 들어, GitHub에 공개되는 저장소를 자신의 컴퓨터에 다운로드할때 사용합니다. 

 

git clone [url]

 

git remote 

 

원격 저장소를 조작하는데 사용하는 명령으로 아래와 같이 사용합니다. 

 

git remote : 원격 저장소의 이름 목록 표시 

git remote -v : 원격 저장소에 대한 자세한 목록보기 

git remote add : 원격 저장소를 추가 

git remote rm : 원격 저장소를 제거 

 

git reset 

 

로컬 저장소의 커밋을 취소하기 위하여 사용하는 명령어 입니다.

잘못 커밋하거나 수정 누락이 있을때 자주 사용 

 

git reset -soft HEAD 

 

git merge

 

현재 브랜치에 다른 지점에서 변경 사항을 병합하는데 사용하는 명령 

다음의 예에서 분기 bug-fix를 master 브랜치에 병합

 

git pull

 

브랜치의 변경 사항을 캡처하기 위해 사용하는 명령어 

로컬 저장소의 브랜치에 원격 저장소 origin의 master 브랜치를 가져옵니다. 

 

 

출처 : https://tagilog.tistory.com/377

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'IT' 카테고리의 다른 글

CI/CD(지속적 통합/지속적 제공)란 ??  (0) 2021.09.16
github에서 자주 쓰는 영어  (0) 2021.09.15
WMS이란 ?  (0) 2021.08.20
SCM과 SRM이란 ?  (0) 2021.08.20
RPA 란 ??  (0) 2021.08.18