GitHub 용어와 개념 정리 및 원격과 로컬 연동하기
1. 개념 정리
1.1 레포지토리란?
1.1.1 Local Repository
로컬 레포지토리는 사용자의 컴퓨터에 저장된 Git 저장소로, 개발자는 여기에서 코드를 작성하고 테스트할 수 있다. 모든 작업은 로컬에서 이루어지며, 나중에 원격 저장소에 푸시할 수 있다.
1.1.2 Remote Repository
원격 레포지토리는 GitHub와 같은 서버에 저장된 저장소로, 다른 개발자와의 협업을 가능하게 한다. 원격 저장소에 푸시하면 팀원들과 변경 사항을 공유할 수 있다.
1.2 버전이란?
버전은 코드의 특정 상태를 나타내며, Git에서는 각 버전이 고유한 커밋 해시를 가진다. 이를 통해 언제든지 이전 상태로 되돌릴 수 있고, 코드 변경 이력을 관리할 수 있다.
1.3 History란?
History는 레포지토리의 모든 커밋 이력을 의미한다. 사용자는 이력을 통해 과거의 변경 사항을 추적하고, 특정 버전으로 돌아갈 수 있다.
1.4 Staging이란?
Staging은 변경 사항을 커밋하기 전에 준비하는 단계이다. 사용자는 원하는 파일만 선택하여 Staging 영역에 추가하고, 이후에 커밋할 수 있다.
1.5 Branch란?
Branch는 독립적으로 작업할 수 있는 경로를 제공한다. 개발자는 각 기능이나 버그 수정을 위한 브랜치를 생성하고, 작업 후 메인 브랜치에 병합할 수 있다.
1.6 Commit과 Add란?
- Add: 변경된 파일을 Staging 영역에 추가하는 명령어이다.
- Commit: Staging 영역에 있는 변경 사항을 로컬 레포지토리에 기록하는 명령어이다. 커밋할 때마다 메시지를 작성하여 변경 내용을 설명한다.
1.7 Pull과 Push란?
- Pull: 원격 저장소의 변경 사항을 로컬로 가져오는 명령어이다. 팀원이 작업한 내용을 최신 상태로 유지하는 데 사용된다.
- Push: 로컬의 변경 사항을 원격 저장소에 반영하는 명령어이다. 팀원과의 협업을 위해 변경 사항을 공유할 수 있다.
1.8 Clone이란?
Clone은 원격 저장소의 모든 내용을 로컬에 복제하는 작업이다. 이를 통해 로컬에서 작업을 시작할 수 있으며, 원격 저장소와 동기화된다.
1.9 Merge란?
Merge는 두 개 이상의 브랜치를 통합하는 작업으로, 주로 기능 브랜치를 메인 브랜치에 병합할 때 사용된다. 충돌이 발생할 경우 수동으로 해결해야 한다.
1.10 Upstream이란?
Upstream은 로컬 브랜치가 추적하는 원격 브랜치를 의미한다. 사용자는 git push
또는 git pull
명령어를 사용할 때 업스트림 설정을 통해 원격 브랜치와 연결된다.
2. 실제 사용법
2.1 GitHub 레포지토리 만들기
github에 접속 후 로그인한다. Repositories 탭의 new를 선택하면 새로운 레포지토리 생성 페이지로 들어간다.
- Repository name: 사용자의 레포지토리 이름을 입력한다.(필수)
- Description: 레포지토리에 관한 간단한 설명을 입력한다.(선택)
- Public/Private: 레포지토리의 공개 여부를 설정한다.(필수)
- Add a README file: README.md 파일의 자동 생성 여부를 선택한다.(선택) -> 생성하는 것을 추천한다.
- Add .gitignore: .gitignore 파일을 양식에 맞추어 자동 생성할 수 있다.(선택)
- Choose a license: 지정된 양식의 license를 선택할 수 있다.(선택)
위의 6가지 선택을 한 후 Create Repository 버튼을 눌러 레포지토리를 생성한다.
2.2 로컬에서 생성된 레포지토리 받아오기
- 원하는 폴더에서 마우스 우클릭 -> Open Git Bash Here을 선택해서 Git bash terminal을 연다.
- git 시작:
git init
- commit 작성자 설정
을 한 후에git config --global user.name {username} git config --global user.email {useremail}
으로 작성자 설정을 확인한다. 이렇게 하면 기본 설정이 끝난다.git config --global -l
2.3 로컬에서 작업한 파일 및 폴더 push 하기
- 스테이징 작업
git add .
명령어로 변경사항을 Staging 한다. 만약 특정 폴더만 Staging하고 싶다면git add {location}
을 사용할 수 있다. (. 은 루트 디렉토리 이하의 모든 폴더 및 파일을 말한다.) git status
를 통해 현재 add 상태를 확인할 수 있다.- Commit 작업
git commit -m '{commit message}'
를 이용하여 commit 한다. - Push 작업
git push -u origin master
를 사용하여 원격 저장소에 push한다.-u
를 통해 upstream 설정을 한다.git push origin master
: upstream 설정을 하지 않는다.git push
: upstream이 설정되어 있다면 사용.
- 참고사항
3. 명령어 정리 (<필수 변수>, [선택 변수])
3.1 git add [옵션] <파일명>
파일의 내용을 스테이징 한다.
- 옵션 설명
- -A: 모든 변경사항 추가
- -u: 추적된 파일의 변경 사항만 추가
- -i: 대화형 모드로 추가
3.2 git commit [옵션]
변경 사항을 저장소에 기록한다.
- 옵션 설명
- -m "<메시지>": 커밋 메시지 입력
- -a: 자동으로 변경된 모든 추적 파일을 포함
- --amend: 마지막 커밋 수정
3.3 git clone <저장소 URL> [대상 디렉토리]
원격 저장소의 내용을 로컬 디렉토리로 복제한다.
- 옵션 설명
- -b <브랜치>: 특정 브랜치를 클론
- --depth <숫자>: 특정 깊이만큼의 커밋을 클론
- --single-brnach: 기본 브랜치만 클론
3.4 git push [원격] [브랜치] [옵션]
로컬 변경사항을 원격 저장소에 반영한다.
- 옵션 설명
- --force: 강제로 푸시 (기존 이력을 덮어 씌움)
- --tags: 태그도 함께 푸시
- --set-upstream: 로컬 브랜치와 원격 브랜치를 연결
3.5 git pull [원격] [브랜치] [옵션]
원격 저장소의 변경 사항을 가져와 현재 브랜치에 병합한다.
- 옵션 설명
- --rebase: 병합 대신 재적용
- --no-commit: 자동으로 커밋하지 않음
3.6 git branch [옵션] [브랜치 이름]
브랜치를 관리한다.
- 옵션 설명
- -d <브랜치>: 브랜치 삭제
- -D <브랜치>: 브랜치 강제 삭제
- -m <이름>: 브랜치 이름 변경
3.7 git merge [브랜치] [옵션]
두 개 이상의 개발 이력을 병합한다.
- 옵션 설명
- --no-ff: 병합 시 항상 커밋 생성
- --squash: 여러 커밋을 합침
3.8 git status [옵션]
현재 작업 트리의 상태를 보여준다.
- 옵션 설명
- -s: 간단한 형식으로 상태 표시
- -b: 현재 브랜치와 추적 브랜치 정보 표시
3.9 git log [옵션]
커밋 로그를 보여준다.
- 옵션 설명
- --oneline: 한 줄 형식으로 요약
- --graph: 그래프 형태로 로그 표시
- --author=<이름>: 특정 작성자의 커밋만 표시
- --since=<날짜>: 특정 날짜 이후의 커밋만 표시
- --until=<날짜>: 특정 날짜 이전의 커밋만 표시
3.10 git fetch [원격] [브랜치] [옵션]
원격 저장소의 새로운 변경 사항
'협업하자!?!!' 카테고리의 다른 글
개발자 필수템 - github 사용하기 03. github 유지 보수 (0) | 2024.10.15 |
---|---|
개발자 필수템 - github 사용하기 01. git bash (2) | 2024.10.15 |