2022. 8. 1. 19:26ㆍGIT
깃허브에 저장소를 생성하면 로컬 저장소와 연결해야 한다.
기존 로컬 저장소와 연결하거나 새 로컬 저장소를 생성하여 연결할 수도 있다.
로컬 저장소
원격 저장소에 연결하려면 먼저 로컬 저장소가 필요하다.
새로운 로컬 저장소를 생성하고 원격 저장소를 연결
먼저 새 로컬 저장소를 생성하고 초기화를 한다.
그리고 저장소의 소개 페이지 파일을 하나 생성한다. (README 파일)
README.md 파일을 추적 등록하고 커밋을 진행한다.
로컬 저장소에 README.md 파일을 만들었다.
경고창이 뜨는데 OS별 문자열 줄바꿈이 다르기 때문에 커밋 시 LF는 CRLF로 대체된다는 의미다.
이 경고 메시지가 뜨는 이유는 깃 설치 시 line ending 옵션을 미리 설정해 두었기 때문이다.
현재 옵션은 깃에 커밋할 때는 CRLF를 LF로 변환하고 읽어올 때는 LF를 CRLF로 변환하는 것이다.
같은 OS를 사용하는 개발자와 협업 시 상관없지만 리눅스나 MacOS 사용하는 개발자와 협업 시 개행 문자가 다르기 때문에 이런 옵션이 없다면 코드가 변하지 않았는데 CRLF로 작성된 문자열 파일을 깃에 커밋을 하고 리눅스 사용자가 파일을 내려 받으면 개행문자가 다르기 때문에 워킹 디렉토리에 동일한 파일이 있더라도 코드 변화가 감지되어 커밋을 하게 된다.
그리고 개행문자가 다른 문자로 인식해서 이상한 값으로 출력될 것이다.
이러한 문제를 해결하기 위해 깃을 설치할 때 이미 옵션 설정을 할 수 있다.
윈도우 사용자는 이와 같은 명령어로 환경 설정 파일에 남길 수 있다.
$ git config --local core.autocrlf = true
global로 설정하고 싶으면 --local 대신 --global 쓰면 된다.
리눅스, MacOS 사용자는 core.autocrlf = input 으로 설정하면 되고 그러면 커밋할 때만 CRLF를 LF로 변환해준다.
※ LF (Line Feed) = "\n"
커서는 위치 그대로 종이만 한 줄 올려 줄을 바꾸는 동작
타자기에서 종이를 먹는 행위
리눅스, MacOS에서 사용하는 줄넘김 방식
※ CR (Carriage Return) = "\r"
현재 커서를 줄 올림 없이 맨 앞으로 옮기는 동작
타자기에서 종이가 왼쪽으로 움직이는데 종이 입장에서 커서가 오른쪽으로 움직인다.
커서를 원위치 시키는 행위 (종이를 맨 오른쪽으로 이동시키기)
※ CRLF
윈도우에서 사용하는 줄넘김 방식
프로토콜
서버와 통신하려면 프로토콜을 사용해야 한다.
깃은 기본적으로 Local, HTTP, SSH, Git 네 종류의 전송 방식을 지원한다.
Local
로컬 컴퓨터에 원격 저장소를 생성하는 것을 의미한다.
이 방식은 자신의 컴퓨터를 NFS 등 서버로 이용할 때 편리하다.
로컬 저장소를 서버로 이용할 때는 폴더 경로만 입력하면 된다.
$ git remote add 원격저장소별칭 폴더경로
로컬은 간단하게 원격 저장소를 구축하고 빠른 동작이 가능하다.
HTTP
HTTP는 SSH처럼 많이 사용하는 프로토콜 중 하나로 깃허브, 비트버킷 같은 호스팅 서비스도 기본 HTTP 프로토콜을 지원한다.
서버에 접속하려면 로그인 절차를 거쳐야 하고 HTTP는 기존 아이디와 비밀번로만으로 접속자를 인증하여 처리한다.
HTTP는 익명으로 처리할 수 있으며, 계정을 이용하여 처리할 수도 있다.
SSH
SSH는 깃에서 권장하는 프로토콜로 높은 수준의 보안 통신으로 처리하기 때문에 깃 서버를 좀 더 안전하게 운영할 수 있다.
SHH 프로토콜을 사용하려면 주소 앞에 'ssh://계정@주소' 프로토콜 타입을 지정해야 한다.
계정을 생략하여 현재 로그인된 사용자로 대체할 수도 있다.
SSH 접속을 할 때는 인증서를 만들어서 사용한다.
인증서를 만들어 접속하면 별도의 회원 로그인을 하지 않아도 된다.
인증서는 공개키와 개인키로 구분하는데 공개키는 서버에 등록하고 개인키는 로컬에 저장한다.
SSH는 HTTP와 달리 익명으로 접속할 수 없다.
→ 기업에서 깃 서버를 운영할 때 적합한 프로토콜
Git
깃의 데몬 서비스를 위한 전용 프로토콜 방식이다.
SSH와 유사하나 인증 시스템이 없어 보안에 취약할 수 있다.
실제로 잘 사용하지 않는다고 한다.
원격 저장소의 리모트 목록 관리
깃은 원격 저장소(서버)를 관리하는데 remote 명령어를 사용한다.
remote 명령어를 사용하면 현재 연결된 원격 저장소 목록을 확인할 수 있다.
$ git remote
동시에 등록과 취소 등 작업을 할 수 있다.
-v 옵션을 사용하면 원격 저장소의 별칭 이름과 URL를 확인할 수 있다.
$ git remote -v
깃은 복수의 원격 저장소를 연결하여 사용할 수 있다.
주소와 별칭
로컬 저장소에 원격 저장소를 등록하려면 서버 주소가 필요하다.
깃허브 같은 저장소를 이용해보면 프로토콜 + 도메인 주소 형태로 된것을 볼 수 있다.
로컬에 서버 저장소를 생성할 때는 폴더 경로를 사용할 수 있다.
별칭
원격 서버의 주소는 긴 문자열로 되어 있다. 매번 원격 서버에서 작업할 때마다 긴 문자열을 입력하는 것은 귀찮기 때문에 간략하게 긴 서버 URL 문자열을 별칭으로 만들어 사용할 수 있다.
별칭은 중복해서 사용할 수 없다.
origin
origin은 대표적으로 사용하는 별칭이다.
원격 저장소와 연결할 때 별칭으로 origin을 볼 수 있다.
원격 저장소에 연결
로컬 저장소 branch 이름이 master로 되어 있는데 github에서 default branch명이 main이다.
로컬 저장소 branch 이름이 main으로 바꾼다.
$ git branch -m "main"
로컬 저장소와 원격 저장소를 연결할 때 사용하는 명령어는 add 옵션을 사용한다.
$ git remote add 원격저장소별칭 원격저장소URL
깃허브에 있는 저장소를 연결하기 위해 주소를 알고 싶다면 code 버튼을 누르면 볼 수 있다.
또는 웹 브라우저 주소창에 있는 URL 복사해도 된다.
원격 저장소가 연결되면 git remove -v 명령어로 출력을 해보면 fetch와 push 두 주소를 출력한다.
push는 서버로 전송하는 동작
fetch는 서버에서 가져오는 동작을 의미한다.
소스트리에서 원격 브랜치
원격 저장소를 등록하면 기존 master 브랜치와 달리 또 하나의 브랜치가 표시된다.
main는 현재 로컬 저장소 브랜치를 의미한다.
origin/main은 별칭/브랜치는 원격 저장소의 브랜치를 의미한다.
로컬 저장소와 서버 서장소를 구분하여 표시한다.
※ 원격 저장소를 등록하면 원격 브랜치 main이 자동 생성된다.
별칭 이름 변경과 정보
별칭은 긴 문자열의 서버 주소를 대체한다. 등록된 서버의 별칭 이름은 다시 변경할 수 있다.
rename 옵션을 사용한다.
$ git remote rename 변경전 변경후
remote 명령어보다 원격 저장소의 상세한 정보를 확인할 때 show 옵션을 사용한다.
$ git remote show 원격저장소별칭
원격 서버 삭제
로컬 저장소는 복수의 원격 저장소와 연결할 수 있다.
깃을 사용하다보면 pull request, 테스트 등 목적으로 임시 등록된 원격 저장소들도 있다.
등록된 원격 저장소는 rm 옵션으로 삭제할 수 있다.
$ git remote rm 원격저장소별칭
'GIT' 카테고리의 다른 글
[GIT] 자동으로 내려받기 (0) | 2022.08.02 |
---|---|
[GIT] 서버 전송 (0) | 2022.08.01 |
[GIT] 깃허브 서버 준비 (0) | 2022.07.31 |
[GIT] 서버 저장소 (0) | 2022.07.31 |
[GIT] diff 명령어 (0) | 2022.07.27 |