깃 서버
서버 저장소
서버 저장소는 다른 말로 원격 저장소라고 함.
협업 저장소
분산형 모델
연속된 작업
사무실에서 작업하고 서버에 올린 코드를 자신의 컴퓨터에 동기화
새 멤버
깃의 원격 저장소 주소만 알려주면 모두 해결
깃허브 서버 준비
깃허브
깃허브에 접속 및 사용자 로그인
저장소 생성
원격저장소 생성, 새 리파지토리, 공개용 저장소로 생성
깃허브 연동 및 원격 등록
로컬 저장소
git init 로 로컬 저장소 생성
프로토콜
- Local
로컬 저장소를 서버로 이용
git remote add 원격저장소별칭 폴더경로
- HTTP
- 로그인을 통해 처리 하거나 익명으로 처리 가능
- SSH
- 인증서를 만들어 사용, 공개키는 서버에 등록하며 개인키는 로컬에 저장함
- Git
- 깃의 데몬 서비스를 위한 전용 프로토콜
원격 저장소의 리모트 목록 관리
원격저장소 관리에 remote 명령어를 사용한다.
원격저장소 목록을 확인 및 등록,취소 등의 작업을 한다.
# 원격 저장소의 이름을 출력
git remote
# 이름과 URL 까지 상세 정보 확인
git remote -v
주소와 별칭
원격 저장소를 등록하려면 프로토콜 + 도메인 주소가 필요함.
로컬에 서버 저장소를 생성할 때는 폴더 경로를 사용할 수 있음.
- 별칭 : 긴 서버 URL을 문자열 별칭으로 만들어 사용
- origin : 대표적으로 사용되는 별칭, 기본적으로 원격 저장소와 연결 시 사용.
원격 저장소에 연결
원격 저장소와의 연결에는 add 명령어를 사용한다.
git remote add 원격저장소별칭 원격저장소URL
소스트리에서의 원격 브랜치
원격과 로컬 저장소를 분리해서 표시한다.
별칭 이름 변경과 정보
# 원격 저장소 이름 변경
git remote rename 변경전 변경후
# 원격 저장소 간략 정보 출력
git remote show 원격저장소별칭
원격 서버 삭제
# 원격 저장소 삭제
git remote rm 원격저장소 별칭
서버 전송
push : 서버에 전송
원격 저장소로 내용을 전달할 때 사용.
# 별칭 이름을 가지는 서버의 master브랜치에 현재 브랜치를 업로드.
git push 원격저장소별칭 브랜치이름
자동으로 내려받기
clone : 복제
원격 저장소를 로컬에 복제할 때 사용. init 명령어 외 원격 서버 결속에 필요한 추가 설정을 자동으로 수행
pull : 서버에서 내려받기
원격 저장소의 갱신된 내용을 추가로 내려받을 때 사용.
수동으로 내려받기
자동병합
풀은 원격 저장소에 현재 커밋보다 더 최신 정보가 있을 때 내려받으며, 받은 커밋 정보는 임시 영역에 저장.
fetch : 가져오기
원격 저장소에서 코드를 수동으로 내려받는 작업. 내려받은 후, 현재 브랜치와 자동 병합하지 않습니다.
git fetch 원격저장소URL
fetch 명령어를 실행하면 커밋이 추가된 것을 확인할 수 없다. 원격저장소의 커밋들만 가지고 왔을 뿐 로컬 저장소에서 어떤 작업도 하지 않는다.
merge 명령어로 수동 병합
내려받은 커밋을 로컬 저장소에 적용할 때 사용.
git merge 원격저장소별칭/브랜치이름
fetch 명령어로 내려받은 커밋을 로컬 저장소에 병합.
병합 하는 과정에서 병합 충돌이 발생할 수 있음.
순서
최신상태
원격 저장소에 푸시하려면 로컬 저장소를 최신 상태로 유지해야 함.
커밋이 순차적이지 않은 경우 깃은 푸시 동작을 거부한다.
충돌 방지
깃이 최신 상태만 푸시를 허용하는 것은 충돌 방지를 위함이다.
풀 작업은 내려받은 커밋들을 현재 브랜치로 자동 병합한다.
이 때, 커밋 내용이 순차적이지 않으면 병합 충돌이 발생한다.
- 인증 정보 캐시
인증 정보를 캐싱하여 남겨놓아 전역으로 설정하여 보관.
git config --global credential.helper cache
- 원격 저장소 원리
깃을 원격 저장소에 연결하면 ./git/config 파일 안에 리모트 연결에 대한 설정 정보가 자동 추가 됨.
[remote "origin"] url = https://github.com/asd/asd.git fetch = +refs/heads/*:refs/remotes/origin/*