본문 바로가기

유틸리티-사이트

github 사용법

반응형

ி 개요


github은 소스 코드 저장소로서 개발 협업으로 많이 사용된다.
팀 프로젝트를 진행할 때 전체 소스를 공유하고 버전을 관리할 수 있으며
개발 파트를 나누어 모듈을 개발할 수 있기 때문에 분산 버전 관리 툴이라고 불린다.

github 서비스를 사용하려면 먼저 github 홈페이지에 회원가입을 하고
git을 사용하기 위해 git 프로그램을 컴퓨터에 설치해야 한다.



가입 및 설치


회원가입 : https://github.com/
프로그램 설치 : https://git-scm.com/downloads
➽ 초심자는 일단 프로그램을 써보는 게 중요하므로 설치는 기본 설정으로 쭉 진행하면 된다.

git 프로그램은 윈도우의 cmd 혹은 리눅스 기반의 git bash를 사용할 수 있으며 
이 포스팅에서는 cmd를 이용할 것이다.

github은 소스 코드를 관리하기 위해서
로컬 리포지토리(내부 저장소) 리모트 리포지토리(원격 저장소)를 두는데
쉽게 말해서 전자는 내 컴퓨터에 저장소, 후자는 github 서버의 저장소를 말하는 것이다.
내가 컴퓨터에서 수정한 소스 코드 파일들을 원격 저장소인 github에 반영하려면
명령 프롬프트 창에서 일련의 명령을 수행해야 한다.



ி git 사용하기




git 환경 설정


내 컴퓨터를 git 저장소로 활용하려면 CMD에서 다음과 같은 작업이 필요하다.
git config --global user.name jdh5202
git config --global user.email jdh5202@naver.com
git config --list
내외부 저장소와 동기화가 이루어져야 하므로 계정 설정은 필수다.
이름과 이메일은 본인의 깃허브 계정을 넣는다.

그리고 내 컴퓨터에 내부 저장소 역할을 하기 위한 폴더를 하나 만든다.
필자는 C:\에 git_code라는 폴더를 생성하여 해당 폴더를 github 저장소로 사용할 생각이다.
그리고 그 안에 간단히 소스 코드 파일을 만든 다음에
해당 파일을 원격 저장소와 동기화 시켜 줄 것이다.

먼저 본인의 github 리포지토리로 가서 clone 주소를 복사하고
명령 창에서 아까 만든 폴더로 이동하여 git clone을 적용한다. 

클론 후에 경고 문구는 신경 안 써도 된다.
원격 저장소에는 저장된 파일이 한 개도 없으니 비어있는 저장소라고 나오는 것이다.
이제 동기화할 준비를 끝냈다.



git 동기화



파일 동기화를 위해서 git add, git commit, git push를 사용하게 된다.
저 명령을 이해하려면 git이 파일을 보내는 과정을 알아야 한다.

Git의 구조는 다음과 같다.
작업 디렉토리(Working Directory) -> 준비 영역(Staging Area) -> 내부 저장소(Local repository)

git add 명령은 작업 디렉토리에서 수정된 파일을 준비 영역에 저장시키고,
git commit 준비 영역에서 내부 저장소로 옮기게 해준다.
commit은 파일의 변경 이력을 보장해주고
파일에 문제가 생겼을 때 복구 할 수 있는 일종의 스냅숏 기능과 유사하다.

준비 영역은 Commit할 파일들을 올려놓는 일종의 가상 영역이다.

위에 두 명령어(add,commit)는 결국 내부 저장소에 파일을 반영하기 위해
쓰인다는 것을 알 수 있다. 그 이후 내부 저장소에 있는 파일을
원격 저장소에 전달하기 위해 사용하는 명령이 git push이다.

이제 실제 명령을 적용해볼 것이다.
clone이 제대로 됐다면 명령 창에서 바로 전에 만들었던 git_code 폴더에 
본인의 리포지토리명으로 만들어진 폴더가 또 하나 생성됐을 것이다.
그 폴더로 이동하고 add와 commit 명령을 수행한다.

모든 파일을 다 add 해야 한다면 git add .로 입력하자.
.은 모든 파일을 의미한다. 폴더의 하위 내용을 전부 추가하고 싶은 경우 directory/*로 입력하면 된다.

commit될 때 -m 옵션은 해당 소스에 대한 설명 코멘트를 붙이는 옵션이다.



여기서 추가로 알아야 할 명령어는

git status이다. 이 명령에서 정상적으로 조회된 파일들만 commit 할 수 있다.

파일 이름이 빨간색 글씨로 표시된다면
현재 파일에 변경된 내용이 없거나 문제가 있어서 commit 할 수 없다는 뜻이다.
해당 파일을 조금 수정하고 다시 조회하면 초록색 글자로 표시되어
commit 가능 상태임을 알려준다.



git 명령어



1 git reset
이미 git add를 했는데 취소하고 싶을 때 사용한다.
ex) git reset file.c

2 git fetch
원격 저장소의 데이터를 로컬에 가져오는 방법이다.

3 git merge
다른 사용자와 내가 동일한 파일을 수정해서 충돌이 난 경우
이 명령을 통해서 동기화 할 수 있다.

4 git pull
git fetch + git merge를 합친 기능이다.
동기화가 이미 된 상태라면 Already up to date라는 메시지를 출력한다.

5 git reset --hard 커밋해시값
파일을 이전 버전으로 되돌린다. 수정된 내역을 반영하고 싶지 않을 때 쓴다.
커밋 해시값을 보려면 git 홈페이지에서 commit 내역을 보거나
git log 명령을 통해 조회해볼 수 있다.


이 명령을 사용하면 해당 커밋을 적용하고
그 이후에 발생했던 커밋들은 모두 제거된다.
soft 옵션을 사용하면 그 이후의 내역들도 보관한다.

이때 원격 저장소에도 반영하려고 push 하면 rejected 오류가 뜰 수 있는데
이는 로컬 저장소와 원격 저장소의 구성이 달라져서 그렇다.
이때 강제로 푸쉬하는 명령을 수행한다. ( git push -f )

6 git commit --amend
이미 커밋된 작업의 커밋 메시지를 수정한다.
이 명령을 실행하면 커밋 수정 모드로 진입한다.
유닉스 에디터 기반이기 때문에 vi를 다뤄본 사람이라면 쉽게 할 수 있을 것이다.


7 git init
로컬에 존재하는 .git 디렉토리를 rmdir /S /Q .git 명령어로 삭제하고
깃 저장소를 초기화한다. 



7. 브랜치(Branch)

브랜치는 동시에 여러 개발자가 프로젝트에서 다른 기능을
개발할 수 있도록 해준다. 이는 팀 개발에 매우 중요한 요소로써
브랜치를 만들면 각자의 터전에서 다른 사람 작업에 영향을 끼치지 않고
개발을 할 수 있다.

브랜치 종류는 마스터 브랜치, 디벨롭 브랜치, 버그 픽스 브랜치가 있다.

마스터 브랜치 프로젝트가 항상 배포되는 상태이므로
개발 단계에서는 디벨롭 브랜치나 버그 픽스 브랜치에서 작업을 하고 병합을 거쳐서
마스터 브랜치에 변경 사항을 적용한다.

➽ 통합 브랜치 = 마스터 브랜치
➽ 토픽 브랜치 = 버그 픽스 브랜치, 디벨롭 브랜치
git 저장소를 만들면 마스터 브랜치가 생성되고 기본값으로 등록된다.

7-1 git branch
브랜치 목록을 조회한다.

7-2 git branch 브랜치명
브랜치를 생성한다.

7-3 git checkout 브랜치명
현재 브랜치를 설정한다.



7-4 git merge 브랜치명
자신의 브랜치를 master에 합치려고 하는 경우
git checkout master
git merge 브랜치명 명령을 통해서 반영할 수 있다.

7-5 git branch -d 브랜치명
브랜치를 제거한다. 보통 병합이 끝난 브랜치는 쓸 일이 없으니 제거한다.


8 git stash
Your local changes to the following files would be overwritten by merge.
위 에러 발생 시 pull로 가져오려는 소스와 현재 저장된 코드가 제대로 처리되지 않았다는 뜻이다.
이 명령어를 통해서 하던 작업을 임시로 저장하고 깨끗한 상태로 되돌린다.

9 git remote
원격 저장소를 확인한다.

9-1 git remote show origin
원격 저장소의 구체적인 정보를 출력한다.

9-2 git remote rename 변경대상 새원격저장소명
원격 저장소 이름을 변경한다.

9-3 git remote add 새원격저장소명
원격 저장소를 추가한다.

9-4 git remote rm 원격저장소명
원격 저장소를 제거한다.

10 git 로그 조회
git log --pretty=format:"time: %ar, user: %an, file: %s" --graph

commit 기록을 시간, 사용자, 파일 순으로 조회한다.


11 git 압축 명령어
git 프로젝트에서 git 폴더를 제외한 다른 소스 코드만
포함하려고 할 때 사용한다.
git archive --format=zip master -o source.zip
브랜치 및 아웃풋 경로와 압축 파일명을 적는다.

12 git rebase
특정 커밋을 수정하거나 삭제할 때 사용된다.

git rebase -i HEAD~5
i는 에디터 모드이고 HEAD 기준으로 5개의 커밋 내역만 확인한다는 뜻이다.
( 본인이 가지고 있는 커밋 개수보다 높게 설정하면 조회되지 않는다. )
명령이 실행되고 나면 커밋을 수정할 수 있는 에디터 창이 열리고 
변경을 원하는 커밋 부분에 pick이라는 내용을 reword로 바꾼 후 에디터를 종료한다.

그러면 바로 해당 커밋 내역을 수정할 수 있는 창이 열린다.

커밋 내역이 너무 많은 경우 HEAD 대신 커밋의 해시값을 넣어서 조회할 수도 있다.
팀원과 공동 작업하는 경우의 커밋 삭제는 리포지토리 충돌 가능성 때문에 딱히 추천하지 않는다.


13 git rm 파일명
원격 저장소와 로컬 저장소에 있는 파일을 삭제한다.
파일 삭제 후 push는 필수다.
로컬 저장소에 있는 파일은 놔두고 원격 저장소 파일만 삭제하는 명령은 아래와 같다.
git rm –cached 파일명


14 git clean -f
untracked 파일을 모두 지우고 디렉터리를 포함하여 지우려면
git clean -fd를 사용한다.


15 CRLF 설정
OS마다 사용하는 개행문자가 달라서 
git add 명령 시 LF will be replaced by CRLF in file.js  경고가 발생한다면.. 
아래 명령을 적용하면 자동으로 OS에 맞게 개행 문자를 바꿔준다. 
git config core.autocrlf true


16 git 변경사항 적용

git에서 파일이 수정되거나 삭제된 작업을 반영한다.

> git add -u
> git commit -a -m "commit"
> git push




ி github 소개 페이지 작성


github 리포지토리에서 나의 프로젝트에 대한 소개 글을 작성하지 않으면
다른 사용자가 방문했을 때 내가 만든 프로젝트는 어떤 목적으로 만들어졌고
어떻게 사용하는지 알기 힘들다. 따라서 자신의 프로젝트를 설명하는 인덱스 페이지를
만들어야 한다. 그 파일이 바로 README.md이다.
이 파일의 확장자는 마크다운의 약자로 텍스트를 html로 변환시켜주는 기능을 한다. 

마크다운은 *라는 텍스트를 만나면 앞으로 나오는 문자들은
이제부터 html을 이용하여 "목차로 만들겠다." 라고 정할 수 있는 파일인 것이다.
간단하게 어떤 식으로 README.md를 작성하는지 아래 사진을 통해 확인하자.

사진을 보면 알겠지만 좌측에 있는 특정 기호들이 html로 치환되어 보여지는 모습이다. 

리드미 파일은 굳이 비유하자면 회사원의 명함과 같은 것이니
방문자를 위한 기본 매너라고 생각하고 꼭 작성해 주는 것이 좋다.


반응형