아래 내용은 "Git 교과서" 책을 정리한 글 입니다.
1. 서버 저장소 (Remote Repository)
- 원격 저장소라 불리며 로컬 저장소의 코드를 복제한 복사본이다.
- 서버 저장소를 통해 코드를 보관 및 다른 사람들과 협업 및 공유할 수 있다.
- 서버 저장소를 통해서 자신의 로컬 저장소를 백업하는 용도로 사용할 수 있다.
2. 깃 허브 (Git Hub)
- 대표적인 깃호스팅 서비스 사이트이며 깃 허브의 대부분의 서비스를 무료로 사용할 수 있음.
- 일반적인 개별 깃 허브의 주소는 다음과 같다: https://github.com/<사용자이름>
- 공개 저장소의 경우 무제한으로 무료로 사용할 수 있지만, 비공개 저장소의 경우 일부 유료 서비스이다.
- 한 소유주 안에서 같은 저장소 이름은 중복하여 생성할 수 없음
- 저장소의 이름은 영문 대소문자, 숫자, 하이픈, 밑줄 조합으로 만들어진다.
3. 깃허브 연동 및 원격 등록
1) 로컬 저장소
로컬 저장소를 원격 저장소에 연결하는 방법은 크게 두 가지이다.
• 새로운 로컬 저장소를 생성하고 원격 저장소를 연결하는 방법
• 기존 저장소를 연결하는 방법
2) 프로토콜
깃은 서버와 통신할 수 있는 다양한 프로토콜을 제공하며 기본적으로 다음 4 종류의 전송방식을 지원한다; Local, HTTP, SSH, GIT
프로토콜 | 설명 |
Local | (a) 로컬 컴퓨터에 원격 저장소를 생성함 (b) 자신의 컴퓨터를 NFS 서버로 이용할 경우 편리함 (c) 로컬 저장소를 서버로 이용하는 경우, 아래의 명령어처럼 폴더 경로만 입력하면 됨 : $git remote add <원격저장소 별칭> <폴더 경로> |
HTTP | 서버에 접속하기 위해서 로그인 절차를 거쳐야 하며, HTTP는 기존 아이디와 비밀번호 만으로 접속자를 인증처리할 수 있음 |
SSH | (a) 깃에서 권장하는 프로토콜 (b) 높은 수준의 보안 통신으로 처리하며 깃 서버를 안전하게 운영할 수 있음 (c) SSH 프로토콜을 사용하기 위해선, 주소 앞에 ssh://계정@주소 처럼 프로토콜 타입을 지정해야 함 (d) SSH 접속을 하는 경우에는 인증서를 만들어 사용하며, 공개키는 서버에 등록되며 로컬키는 로컬에 저장됨 |
GIT | (a) Git의 데몬 서비스를 위한 전용 프로토콜 방식 (b) SSH와 유사하지만 인증 시스템이 없어 취약하다는 단점이 존재 |
3) 원격 저장소와 관련된 명령어
※ 원격 저장소의 주소와 별칭
별칭: 서버의 긴 URL 주소를 간략한 별칭으로 만들어 사용하며 별칭은 중복되지 않아야 한다.
• $git remote
: 현재 연결된 원격 저장소의 목록을 확인 (원격 저장소의 이름을 출력)
• $git remote -v
: 원격 저장소 별칭 이름과 URL을 확인
• $git remote add <원격 저장소 별칭> <원격 저장소 URL>
: 원격 저장소와 연결 또는 등록
- 원격 저장소가 연결이 되면, fetch와 push 두 주소를 출력함
- push: 서버로 전송하는 동작
- fetch: 서버에서 가져오는 동작
- 원격 저장소를 등록하면 로컬 저장소에 브랜치가 추가적으로 생성됨
• $git remote rename <변경 전 별칭> <변경 후 별칭>
: 로컬저장소에 등록된 원격 저장소 별칭을 변경함.
• $git remote show <원격 저장소 별칭>
: 원격 저장소에 대한 상세 정보를 출력함
• $git remote rm <원격 저장소 별칭>
: 등록된 원격저장소를 삭제함.
4) 서버 전송 및 내려받기
(1) 원격 서버로 전송: Push
• 원격 저장소로 커밋된 파일들을 업로드하는 동작
• 로컬 저장소의 내용을 원격 저장소로 전송함
• 원격 저장소로 push를 하기 위해선, 반드시 자신의 로컬 저장소를 최신 상태로 유지해야 한다.
- push를 할 자신의 로컬 저장소의 커밋이 원격 저장소의 커밋보다 최신이어야 함
- 만일, 자신의 커밋이 원격 저장소의 커밋보다 늦은 경우, 원격 저장소로 push가 되지 않음
- 최신 상태에서만 푸쉬를 허용하는 이유: 충돌을 방지하기 위해서
- Pull과 Push를 자주하여 충돌을 최소한으로 줄여나가면서 작업을 유지해야 함.
• Push 명령어: $git push <원격 저장소 별칭> <브랜치 이름>
ex) 원격 저장소의 별칭이 "origin" 이고 현재 로컬 저장소의 master 브랜치를 원격 서버로 전송하는 경우,
$git push origin master
(2) 원격 서버로부터 내려받기: Clone, pull, fetch
원격 서버로부터 내려받기 |
설명 |
clone | • 명령어: $git clone <원격 저장소의 URL> <새로 생성한 로컬 디렉토리> ex) 만일 나의 원격 저장소의 url이 https://github.com/xxxx/xxxx이고 현재의 디렉토리로 복사한다고 하면, $git clone https://github.com/xxxx/xxxx . • 기존 저장소를 이용하여 새로운 저장소를 생성하는 방법 • 로컬 저장소를 생성한 후, 처음으로 코드를 내려받을 때, clone 명령어를 사용하면 편리함 • 초기화 명령어인 init 이외에 원격 서버 접속에 필요한 추가 설정을 자동으로 수행 • 원격 서버와 연결을 마친 후, 모든 커밋된 코드 이력을 내려받음 |
pull | • 명령어: $git pull • 로컬 저장소보다 최신인 갱신된 원격 저장소의 커밋 정보를 현재 로컬 저장소로 내려받음 • pull을 주기적으로 사용하면, 최신 커밋 정보로 로컬 저장소를 유지할 수 있음 |
fetch | • 명령어: $git fetch <원격저장소 URL> • 원격 저장소에서 코드를 수동으로 내려받는 작업 - pull 명령어로 자동으로 브랜치 병합을 하지 못하는 경우에는 fetch 명령어로 수동으로 브랜치 병합을 시켜줘야 함. • fetch에서는 원격저장소로부터 데이터만 받을 뿐, 로컬 저장소의 브랜치와과 병합하지 않음 - fetch로 내려받은 커밋을 브랜치 병합을 하려 할 때에는 merge 명령어를 사용함 - merge 명령어: $ git merge <원격 저장소 별칭>/<브랜치이름> |
'컴퓨터 & IT (Computer & IT) > Github' 카테고리의 다른 글
[GitHub] 병합과 충돌 (0) | 2021.04.24 |
---|---|
[Github] GitHub과 관련된 국내 도서 (0) | 2021.04.23 |
[Github] 브랜치 (0) | 2021.04.06 |
[GitHub] Working directory, stage, commit 내용 정리 (2) | 2021.02.03 |
[Github] Github 설치 (0) | 2020.07.11 |
댓글