GitHub란?
: 소프트웨어 개발 프로젝트를 위한 소스코드 관리 서브이다.
소스 코드를 열람하고 간단한 버그 관리, SNS 기능까지 갖추고 있어 개발자에게 없어서는 안 될 서비스이다.
GitHub를 사용하여 버전 관리를 실시하고 있는 기업도 다수 있다.
GitHub 사용을 위한 사전 지식
: 본격적인 깃허브 사용법을 소개하기 전에, 깃허브를 사용하기 위해 3가지 알아야 한다.
- 가장 중요한 두가지
- 커밋(commit): 파일을 추가하거나 변경 내용을 저장소에 저장하는 작업
- 푸시(Push) : 파일을 추가하거나 변경 내용을 원격 저장소에 업로드하는 작업
- 브랜치(branch)
: 소프트웨어 개발은 현재 출시하고 있는 버전의 유지보수를 하면서 새로운 기능 추가 및 버그 수정을 할 수 있습니다. 이러한 병렬로 수행되는 여러 버전 관리를 위해 GitHub에는 브랜치(branch)라는 기능이 있다.
지점은 역사의 흐름을 분기하여 기록해 나가는 것입니다. 분기 한 지점은 다른 지점의 영향을 받지 않기 때문에 같은 저장소에서 각 개발을 해 나갈 수 있습니다. - 로컬 저장소와 원격저장소
: 저장소는 파일이나 디렉터리를 저장하는 장소이다. 변경 이력을 관리하고자 하는 디렉토리 등을 저장소와 관리하에 두는 것으로, 그 디렉터리에 있는 파일 등의 변경 내역을 기록할 수 있다.
저장소는 자신의 컴퓨터에 있는 "로컬 저장소"고 서버 등 네트워크에 있는 "원격 저장소"의 2개소에 있다. 기본적으로 로컬 저장소에서 작업을 수행하고 그 결과를 원격 저장소에 저장하게 된다.
GitHub 사용법
- GitHub에 저장소 작성(git init) 또는 복제(git clone)
- 파일의 작성, 편집
- 파일의 생성 / 변경 / 삭제를 git 인덱스에 추가(git add)
- 변경 결과를 로컬 저장소에 커밋 (git commit)
- 로컬 저장소를 푸시해 원격 저장소에 반영 (git push)
GitHub에 저장소 생성
: 바로 다음 화면에서 저장소를 만들어 보자. GitHub의 메인화면에서라면 Create New Repository 버튼을 클릭한다. 화면에서처럼 Repositiory name에 이름을 입력 후 필요에 따라 Description에 저장소의 설명을 입력한다. 그리고 저장소 유형에는 "Public"을 선택한다. "Public" 저장소는 유료 회원만 작성할 수 있다.
마지막으로 저장소에 따라 README 파일을 만들어 놓는 경우는 " Initialize this repository with a README"에 체크한다
. gitignore이나 license에 대해서는 나중에 추가하거나 변경할 수 없으므로 None을 선택한다. 필요 항목의 입력이 끝나고 Create repository 버튼을 클릭하면 저장소 생성이 완료된다.
파일의 작성, 편집
"Hello.html" 파일을 로컬 PC에 생성해서 진행을 해 보겠다.
그럼 가지고 계신 PC에 먼저 로컬 저장소를 만든다. 먼저 적당히 "helloworld"라는 디렉터리를 만들 수 있다.
mkdir helloworld
cd helloworld
git init
"mkdir"은 새로운 디렉토리를 만드는 명령
"cd "는 디렉터리를 이동하는 명령이다. "helloworld"라는 디렉토리를 만들고 그 디렉토리롤 이동 한 후 작업을 시작한다.
그리고 "git init" 명령은 Git 저장소를 새로 만드는 명령이다. 이 명령을 실행하면 현재 디렉토리를 Git 저장소로 변환한다.
파일의 생성 / 변경 / 삭제 git 인덱스에 추가 (Git Add)
방금 만든 "hello.html"파일을 로컬 저장소에 추가한다. 그리고 다음의 명령으로 인덱스에 추가한다.
인덱스는 저장소에 커밋할 준비를 하기 위해 변경 내용을 임시로 저장할 위치이다.
git add hello.html
git add .(전체파일)
변경 결과를 로컬 저장소에 커밋 (git commit)
다음으로 인덱스에 추가된 파일을 커밋한다. 커밋은 파일이나 디렉터리의 추가 또는 변경을 저장소에 기록하는 작업이다.
git commit -m "new file"
이제 저장소에 파일 추가가 기록되었다. 파일이 추가되어 있는지 확인한다.
git status
또한 원격 저장소에 반영하기 전에 원격 저장소의 정보를 추가한다. 이 정보는 방금 GitHub에 표시된 원격 저장소의 주소이다. (아래는 예시)
git remote add origin https://github.com/username/repositaryName
연결이 되었는지 확인 (선택사항)
git remote -v
내가 연결한 주소값이 뜨면은 성공
로컬 저장소를 밀어 원격 저장소에 반영 (git push)
로컬 저장소의 변경 사항을 GitHub에 있는 원격 저장소에 반영하기 위해 다음 명령을 실행하면 된다.
git push origin master
GitHub의 사용자 이름과 암호를 입력하면, GitHub에 푸시하고 원격 저장소에 반영할 수 있다. 작업이 끝났으면 Github.com페이지로 가서 파일이 잘 푸시가 되었는지 확인한다.
마스터 브랜치에 소스 가져오기 (pull)
git pull origin master // origin => remote 이름
pull 하기 전에는 기존에 소스코드들을 commit을 먼저 해놔야 한다.
브랜치(branch)사용
- 브랜치의 생성, 이동
- 브랜치에서의 개발 작업
- 브랜치에 푸시
- 브랜치에서 풀
- 브랜치 병합
- 브랜치 삭제
브랜치의 생성, 이동
브랜치 목록을 보자
git branch
실행 결과는 다음과 같다.
*master
현재 브랜치에서는 "*"가 붙습니다. 이것은 브랜치가 master 것이고 브랜치도 master 임을 나타내는 것입니다. 그러면 지점을 만들어 보자. 이번에는 subdir01 라는 브랜치를 생성한다.
git branch subdir01
지점은 이동은 checkout 명령을 사용한다.
git checkout subdir01
또한 지점 만들기 및 이동 다음 명령으로 정리 할 수 있다.
git checkout -b subdir01
여기에서 다시 브랜치 목록을 살펴 보자.
git branch
subdir01 지점이 추가되어 작업 중임을 알 수 있다.
브랜치에서의 개발 작업
브랜치에 푸시
먼저 작성한 파일을 git에 추가 커밋한다.
git add hello2.html
git commit -m "add file hello2"
이제 로컬 저장소에 파일 추가가 기록되었다. 그럼 원격 저장소에 반영시켜 보겠다. 원격 저장소의 정보는 등록제이기 때문에 브랜치 이름을 지정하는 것만으로 푸쉬할 수 있다.
git push origin subdir01
github에서 확인 해 보면, 현재 2개의 브랜치가 존재하고 subdir01 브랜치가 푸시된 것을 알 수 있다.
브랜치에서 풀
그러면 다른 개발자가 subdir01 저장소로 개발할려면 어떻게 해야할까? 이러한 공동 개발에서 git의 위력이 제대로 발휘된다. 이 경우 풀 명령을 사용하여 쉽게 구현 할 수 있다.
우선 저장소 subdir01에 체크아웃 명령으로 이동한다.
git checkout subdir01
실행 결과를 보면 체크 아웃 한 브랜치 subdir01이 원격 브랜치의 subdir01에 대응하고 있는 것을 알 수 있다.
다음 원격 브랜치 subdir01 의 코드를 가져온다.
git pull
로컬 파일 목록을 보자.
ls
이제 여러 개발자의 공동 개발을 시작할 수 있다.
브랜치 병합
실제 개발 현장에서는 새로운 기능의 브랜치를 만들고 개발하고, 테스트가 완료되면 메인 master 브랜치에 통합이라는 흐름으로 개발 작업을 수행한다. 이 브랜치의 통합 작업을 병합이라고 한다. 구체적인 절차는 다음과 같다.
- 현재 분기를 master로 전환한다.
git checkout master
그럼 subdir01 브랜치 결과를 병합한다.
git merge subdir01
실행 결과를 보면 subdir01 지점에서 만든 hello2.html 파일이 추가 된 것을 알 수 있다. github에 푸쉬 해보자
git push origin master
이제 브랜치 subdir01의 내용이 master로 병합되었다.
브랜치 삭제
사용하지 않는 브랜치는 제거 할 수있다. 그러나 실제 개발 현장에서는 잘못 작성되었을 경우 제외하고 작업이 완료된 분기도 남겨 두는 것이 일방적이다.
브랜치를 삭제하려면 다음 명령을 실행한다.
git branch -d subdir01
결과를 살펴 보자
git branch
결과를 확인하면 다음과 같다. 브랜치 subdir01이 삭제되고, master만이 존재하고 있음을 알 수 있다.
'Git' 카테고리의 다른 글
#3 git 컨벤션 설정 (0) | 2024.04.06 |
---|---|
#2 자주 사용하는 Git 명령 12 (0) | 2024.04.06 |