원격저장소
개인이 작업할 때는 백업공간이라는 의미가, 다른 사람들과 협업할 때는 공유한다는 부가적인 의미가 있는 저장소. 개인이 작업하고 있는 공간을 지역저장소(로컬)라고 말하며 원격저장소와는 대비되는 개념.
git remote의 명령어를 입력해 원격저장소의 경로를 저장하는 경우 git폴더 안에 있는 config라는 파일 안에 remote 내용을 기억한다.
git checkout? reset?
- git checkout [commit ID] : commit ID의 상태로 돌아가기
- git checkout [commit ID] [file name] : filename의 파일만 commit ID 상태로 돌아가기
git remote
- git remote -v : 현재 연결돼있는 저장소 조회
- git remote add [원하는이름] [저장소 위치] : [원하는 이름]으로 [저장소 위치] 추가
git remove
- git remove [지우고 싶은 이름] : 연결된 원격저장소를 연결을 끊는다
git clone
- git clone [경로] [원하는 폴더이름] : 경로에 있는 깃파일들을 [원하는 폴더이름]으로 저장
git pull? fetch?
- origin/master(원격저장소)를 git pull을 할 경우 로컬에 있는 master 브랜치는 같은 커밋을 바라보게 된다. 하지만 이 때 origin/head는 아직 pull 이전의 커밋을 바라보기 때문에 아직 수정이 더 필요한 경우 병합하기 이전의 상태로 돌릴 수 있다.
- 하지만 git fetch를 할 경우 origin/master브랜치는 원격저장소의 최신 커밋을 바라보고 있고 지역저장소의 master브랜치는 아직 작업하던 로컬에서의 최신 커밋을 바라보고 있다. 즉, fetch할 경우 로컬의 원격저장소 브랜치에 원격저장소에 있는 내용을 다운받는다. 이 경우 원격저장소의 내용과 로컬저장소의 내용을 비교하기에 용이하다. 둘을 머지하고 싶다면 로컬 브랜치 위치에서 원격저장조의 내용을 git merge origin/master를 이용해 머지할 수 있다.
SSH(Secure Shell)를 이용해 접근하기
github은 clone할 수 있는 방법으로는 SSH라는 통신방법과 HTTPS라는 통신방법을 제공한다. SSH방법을 이용하면 로그인없이 gitgub에 접근이 가능하다는 장점이 있다.
- ssh-keygen
다른 컴퓨터에서 접근할 수 있는 비밀번호를 생성해준다. 이렇게 되면 홈 디렉토리에 id_rsa라는 파일과 id_rsa.pub라는 파일이 생성된다. id_rsa는 private key이고, id_rsa_pub는 public key를 의미한다.
예를 들어 접근하고 싶은 원격 서버 컴퓨터를 A라고 하고 개인이 사용하는 노트북을 B라고 가정하자. A라는 컴퓨터 특정 경로에 id_rsa.pub라는 파일이 있고 B의 특정 경로에 id_rsa라는 private key가 있을 경우 B가 A의 접근하고자 할 때 별다른 로그인 절차없이(기술적으로는 자동 로그인) 안전하게 접근이 가능하다.
본인의 깃헙 저장소와 개인 노트북을 연결하고 싶다면 ssh-keygen명령어를 입력하고 cat id_rsa.pub 명령어를 입력해 파일을 조회하고 안에 있는 문자들을 복사해 연결하고자 하는 깃헙 계정의 Settings- SSH keys에 등록하면 된다.
- git remote add origin ssh://git@[접속하고자하는 서버 컴퓨터의 ip]/[파일 경로]/ : 원격저장소를 ssh방법으로 연결. 연결하고 push를 할 경우 원격저장소의 비밀번호를 물어보게 된다.
- git clone ssh://git@[접속하고자하는 서버 컴퓨터의 ip]/[파일 경로]/ [원하는 파일 이름] : 원격저장소에 있는 파일을 원하는 위치에 복제
자동로그인!
- cd ~ : PC의 홈 디렉토리로 이동
- ssh-keygen -t rsa : rsa 방식을 이용해 ssh통신방식으로 접근 가능한 key 생성. 특별한 설정을 원하지 않다면 엔터 2번.
rsa_id.pub에 내용을 복사하고 자동로그인하고 싶은 컴퓨터에 ssh파일로 이동해 없으면 mkdir .ssh 명령어 입력 후 폴더를 생성하고 그 폴더로 이동한다. vim authorized_keys 라는 명령어를 이용해 파일을 만들고 그 안에 복사한 key값을 붙여넣는다. 이렇게 되면 생성한 public key가 생성한 파일 안에 입려한 게 된다. 이렇게 하면 매번 접속할 때마다 패스워드를 입력하지 않고 자동로그인을 할 수 있다.
직접 복사하는 것보다 간단한 방법은 keygen명령어를 이용해 생성한 파일에서 ssh-copy-id git@[접속하고자 하는 ip]를 입력하고 연결하고자 하는 서버의 비밀번호를 타입하면 public key값을 자동으로 원격저장소의 authorized_keys파일을 생성해 복사해준다.
참조
지옥에서 온 Git
'TIL' 카테고리의 다른 글
Git rebase (0) | 2023.10.07 |
---|---|
Git tag (0) | 2023.10.02 |
Git의 원리 (0) | 2023.08.28 |
Git branch (0) | 2023.08.21 |