GitHub는 Git을 사용하는 프로젝트를 온라인에서 호스팅하고 관리할 수 있는 버전 관리 플랫폼이다.
이를 통해 팀원 간의 협업, 소스 코드 관리, 코드 리뷰, 이슈 관리 등을 효과적으로 수행할 수 있다.
특히, 오픈 소스 프로젝트뿐만 아니라 비공개 프로젝트 관리에도 많이 사용된다.
저장소 (Repository)
브랜치 (Branch)
Pull Request (PR)
브랜치에서 작업한 내용을 다른 브랜치(주로 main)에 병합 요청할 때 사용한다.
코드 리뷰와 변경 사항 확인이 가능하다.
Issues
Actions
Wiki
프로젝트 보드
1. Git 초기화 및 설정
| 기본 명령어 양식 | 실제 예시 | 설명 |
|---|---|---|
| git init | git init | 새 Git 저장소를 초기화 한다. |
| git config --global user.name "Your Name" | git config --global user.name "John Doe" | Git 커밋 사용자 이름을 설정한다. |
| git config --global user.email "your.email" | git config --global user.email "johndoe@email.com" | Git 커밋 사용자 이메일을 설정한다. |
2. 원격 저장소 설정
| 기본 명령어 양식 | 실제 예시 | 설명 |
|---|---|---|
| git remote add <사용할 name> <원격 저장소 URL> | git remote add origin https://github.com/your-username/your-repo.git | 원격 저장소를 추가하고 연결한다. |
| git remote -v | git remote -v | 현재 연결된 원격 저장소 목록과 URL을 확인한다. |
3. 파일 관리
| 기본 명령어 양식 | 실제 예시 | 설명 |
|---|---|---|
| git add . | git add . | 모든 변경 사항을 스테이징 영역에 추가한다. |
| git commit -m "<커밋 메세지>" | git commit -m "Initial commit" | 변경 사항을 커밋하고 메시지를 추가한다. |
4. 브랜치 관리
| 기본 명령어 양식 | 실제 예시 | 설명 |
|---|---|---|
| git branch | git branch | 로컬 브랜치 목록을 확인한다. |
| git branch -r | git branch -r | 원격 브랜치 목록을 확인한다. |
| git branch -a | git branch -a | 로컬 및 원격 브랜치 목록을 확인한다. |
| git branch --set-upstream-to=<원격 브랜치/브랜치명> <로컬 브랜치> | git branch --set-upstream-to=origin/develop develop | 로컬 브랜치와 원격 브랜치를 연결(업스트림 설정)한다. |
| git branch -m <기존 이름> <새 이름> | git branch -m develop bitbucket_develop | 로컬 브랜치 이름을 변경 한다. |
| git branch --merged | git branch --merged | 현재 브랜치에 병합된 브랜치를 확인한다. |
| git branch --no-merged | git branch --no-merged | 현재 브랜치에 병합되지 않은 브랜치를 확인한다. |
5. Push 및 Pull
| 기본 명령어 양식 | 실제 예시 | 설명 |
|---|---|---|
| git push <원격 저장소명> <브랜치명> | git push origin main | 변경 사항을 원격 브랜치(main)에 푸시한다. |
| git push -u <원격 저장소명> <브랜치명> | git push -u github develop | 원격 브랜치(develop)를 추적(업스트림 설정)하며 푸시한다. |
| git pull <원격 저장소명> <브랜치명> | git pull origin main | 원격 브랜치(main)의 변경 사항을 가져온다. |
git push -u 옵션 설명:
원격 브랜치가 없는 경우 : 원격 저장소에 develop 브랜치를 새로 생성하고 로컬 브랜치와 업스트림 관계를 설정한다.
원격 브랜치가 있는 경우 : 로컬 브랜치의 변경 사항을 원격 브랜치에 푸시하고 업스트림 관계만 새로 설정한다.
업스트림 관계 설정 후에는 git push 또는 git pull만 입력하면 자동으로 해당 원격 브랜치와 동기화된다.
6. 병합(Merge)
| 기본 명령어 양식 | 실제 예시 | 설명 |
|---|---|---|
| git merge <브랜치명> | git merge feature-branch | 지정된 브랜치(feature-branch)를 현재 브랜치에 병합한다. |
7. Rebase
| 기본 명령어 양식 | 실제 예시 | 설명 |
|---|---|---|
| git rebase <브랜치명> | git rebase feature-branch | 현재 브랜치를 지정한 브랜치(feature-branch) 기준으로 재배치한다. |
| git rebase -i | git rebase -i HEAD~3 | 최근 3개의 커밋을 인터렉티브하게 수정, 스쿼시, 제거 등 변경할 수 있다. |
| git rebase --continue | git rebase --continue | 충돌 해결 후 rebase 과정을 계속 진행한다. |
| git rebase --abort | git rebase --abort | 진행 중인 rebase를 중단하고 이전 상태로 되돌린다. |
8. 기록 확인 및 변경 사항 비교
| 기본 명령어 양식 | 실제 예시 | 설명 |
|---|---|---|
| git log | git log | 커밋 기록을 확인한다. |
| git log --oneline | git log --oneline | 간단한 커밋 ID와 메시지를 확인한다. |
| git log --graph | git log --graph | 브랜치 병합 히스토리를 시각적으로 확인한다. |
| git diff | git diff | 변경 사항을 비교한다. |
9. 클론 및 포크
| 기본 명령어 양식 | 실제 예시 | 설명 |
|---|---|---|
| git clone <원격 저장소 URL> | git clone https://github.com/your-username/your-repo.git | 원격 저장소를 복제한다. |
| git clone -b <브랜치명> <원격 저장소 URL> | git clone -b develop https://github.com/your-username/your-repo.git | 특정 브랜치(develop)를 복제한다. |
| git clone --depth 1 <원격 저장소 URL> | git clone --depth 1 https://github.com/your-username/your-repo.git | 최신 커밋만 복제하여 저장소 크기를 줄인다. |
10. Stash 관련 명령어
| 기본 명령어 양식 | 실제 예시 | 설명 |
|---|---|---|
| git stash | git stash | 현재 작업 내용을 임시 저장한다. |
| git stash -u | git stash -u | 추적되지 않은 파일(언트랙트 파일)까지 포함하여 임시 저장한다. |
| git stash list | git stash list | 현재 저장된 스택(임시 저장 목록)을 확인한다. |
| git stash pop | git stash pop | 스택에서 가장 최근의 임시 저장 항목을 제거하고 적용한다. (적용 후 해당 항목은 삭제됨) |
| git stash apply <stash 값> | git stash apply stash@{2} | 특정 임시 저장 항목을 선택하여 적용한다. (적용 후에도 해당 항목은 스택에 남아 있음) |
| git stash drop <stash 값> | git stash drop stash@{2} | 특정 임시 저장 항목을 삭제한다. |
| git stash clear | git stash clear | 모든 임시 저장 항목을 삭제한다. |
11. 기타 주요 명령어
| 기본 명령어 양식 | 실제 예시 | 설명 |
|---|---|---|
| git reset --hard <커밋 해시> | git reset --hard abc1234 | 특정 커밋 상태로 되돌린다. |
| git reset --soft HEAD~1 | git reset --soft HEAD~1 | 최근 1개의 커밋을 취소하고 변경 사항은 스테이징 영역에 유지한다. |
| git reset --mixed HEAD~1 | git reset --mixed HEAD~1 | 최근 1개의 커밋을 취소하며 변경 사항은 워킹 디렉토리에 남긴다. |
| git cherry-pick <커밋 해시> | git cherry-pick abc1234 | 특정 커밋을 현재 브랜치에 적용한다. |
| git blame <파일명> | git blame file.txt | 각 줄이 마지막으로 수정된 커밋 ID, 작성자, 시간 정보를 확인한다. |