처음 프로그래밍 공부를 시작했을 때 프로그래머라면 GitHub는 필수적으로 사용한다는 말을 들었지만, 이용방법이 너무나 낯설어 다른 사이트에 연동 로그인을 할 떄는 빼고는 사실상 사용하지 않았다. 최근들어 공부를 하고 흔적을 남기는 것이 중요하다는 생각이 들어 GitHub사용법에 대해 다시 정리해보려고 한다.
만약 당신이 한번도 git과 github를 사용해본이 없고 당장 자신의 코드를 github에 올려보고 싶다면 다음 순서대로 터미널에 입력해보자.
준비물: GitHub account/repository, git설치
터미널상에서 디렉토리 위치를 자신이 업로드 하고 싶은 폴더 또는 파일이 있는 곳으로 이동한다.
1. git init
2. git add FileName
3. git commit -m "new file"
4. git branch -M master
5. git remote add origin https://github.com/AccountName/RepositaryName
6. git push -u origin master
GitHub란?
소프트웨어 개발 프로젝트를 위한 소스코드 관리 서비스이다. 기본적으로 코드를 열람하고 공유하는 역할을 하며, 다수가 프로젝트를 관리하는 기능이 있기 때문에 상당히 중요하다. 또한 Git과 연동되어 버전 관리, 버그 관리, SNS 기능 역시 갖추고 있어 개발자에게 필수적인 서비스이다.
- Commit: 파일을 추가하거나 변경 내용을 저장소에 저장하는 작업이다.
- Push: 파일을 추가하거나 변경 내용을 원격 저장소에 업로드 하는 작업
- Branch: 소프트웨어 개발에는 현재 버전의 유지보수와 더불어 새로운 기능 추가 및 버그 수정이 포함된다. 이렇듯 병렬적으로 수행되는 여러 버전 관리를 위해 Branch라는 기능이 존재한다. Branch를 통해 분기를 지정하고 기록할 수 있다. 이 때 분기된 하나의 지점은 다른 지점에 영향을 주지 않고 독립적이다.
GitHub 작업 흐름
;일반적으로 작은 작업 단위로 커밋을 하고, 작업이 일정량 이상 단락지어지면 푸쉬를 한다. 또한, 커밋 시 어떤 작업인지 커밋 메시지를 남겨두면 로그를 따라가는데 도움이 된다.
- Github에 저장소 작성(git init) 또는 복제(git clone)
- 파일의 작성, 편집
- 파일의 생성/ 변경/ 삭제를 git index에 추가(git add)
- 변경 결과를 로컬 저장소에 커밋(git commit) ; 로컬저장소는 단순 Local memory가 아닌 Local git reposiory를 의미
- 로컬 저장소를 푸쉬해 원격 저장소(git hub)에 반영(git push)
Git Terminal Command
- git init: Git 저장소를 새로 만드는 명령. init 명령을 실행하면 현재 디렉토리를 git이 추적할 수 있도록 .git폴도를 생성한다. Git 저장소로 변환한다.
- git add {fileName}: 파일을 인덱스에 추가하는 명령. 인덱스는 저장소에 커밋 하기 전 변경 내용을 임시로 저장하는 위치이다.
- git commit -m "new file": 인덱스에 추가된 파일을 커밋하는 명령. 커밋은 파일이나 디렉토리의 변경 사항을 저장소에 반영하는 작업이다.
- git commit -m "add file {fileName}": 다음 명령어 역시 위의 명령와 같이 add한 명령어를 커밋한다.
- git push origin {route of branch; defualt = master}: 로컬의 변경 사항을 GitHub에 있는 원격 저장소에 반영
- git status: 해당 디렉토리의 Git 상태를 확인하는 명령
초기 세팅 명령어
;로컬 저장소에 존재하는 파일 및 git 정보를 원격 저장소에도 반영하기 위해 하는 세팅
;push 명령어 사용 전에 미리 경로를 다음과 같이 설정해주어야 한다.
git remote add orgin https://github.com/userName/repositoryName
Branch 작업 흐름; Git Branch Control Command
;새로운 기능의 브랜치를 먼저 개발하고, 테스트가 완료되면 메인 master 브랜치에 통합하는 흐름으로 개발 작업을 수행한다.
처음 git을 init하고 file을 add하면 자동으로 master branch가 생성된다.
생성
- git branch: 브랜치 목록을 확인하는 명령. 현재 브랜치에는 "*"가 붙는다.
- git branch subdir01: subdir01라는 브랜치 생성
- git checkout subdir01: subdir01 브랜치로 지점 이동
- git checkout -b subdir01: subdir01 브랜치 생성 및 이동
Pull
- checkout을 통해 먼저 해당 브랜치로 이동한다.
- git pull 명령어 실행
merge
- git checkout master; 먼저 master branch로 전환한다.
- git merge {branchName}; {branchName}을 현재 branch에 병합한다.
- git push orgin master를 통해 Github에 푸쉬한다.
삭제
- git branch -d {branchName}: 해당 branch를 삭제한다.
Important Git Command
- git log (-n 10): 로컬 저장소의 커밋 히스토리를 보여주는 명령
- git grep: 저장소 안의 파일 내용으로 해당 파일을 검색하는 명령
- git clone [url]: 원격 저장소에 저장되어 있는 파일을 로컬에 다운로드 하는 명령
- git remote: 원격 저장소를 조직하는 명령. 아래는 세부 명령어
- git remote: 원격 저장소의 이름 목록을 보여주는 명령
- git remode add {fileName} {url}: 원격 저장소를 추가하는 명령
- git remote rm {fileName}: 원격 저장소를 제거하는 명령
- git reset(-soft HEAD ^): 로컬 저장소의 커밋을 취소하는 명령
- git pull {repositoryName} {branchName}: 해당 원격 저장소로부터 해당 브랜치를 가져오는 명령
Error Control
//master branch에 push한다.
git push origin master
//fatal: The current branch master has no upstream branch. 브랜치가 원격저장소에 없을경우 발생
git push -u origin master //-u 원격저장소에 master라는 branch를 생성하고 push한다.
// ! [rejected] master -> master (fetch first) 이미 변경된 파일이 원격저장소에 있을경우 발생
git pull origin master
//pull - 원격저장소의 내용을 가져와 로컬저장소의 내용과 자동으로 병합작업을 수행한다.
//fetch - 원격저장소의 내용을 확인만 하고 로컬저장소의 내용과 병합작업을 수행하지 않는다.
'Ect' 카테고리의 다른 글
2021-06-28 :: github관련 작업들 (0) | 2021.06.28 |
---|---|
git 작업하기 실전편 (0) | 2021.06.21 |
2021-05-27 :: RESTful API에 로그인 하기 (0) | 2021.05.28 |
[MacOs] VS Code에서 C/C++ 초기 세팅하기 //lldb Redirection config (0) | 2020.12.08 |
중복조합 (0) | 2020.12.04 |