Git Fork
- 원격 저장소를 내 github로 fork 해올 수 있다.
- fork한 파일 위에서 작업 가능
Git Clone
원격 저장소를 내 로컬에 가져오고싶을 때 사용
git clone [clone할 repository 주소] [디렉토리명]
- clone할 repository의 http 주소를 복사해서 넣어줌
- 해당 디렉토리로 복제된 repository가 복사된다.
git log --reverse # log를 역순으로 출력
git checkout [commit 주소]
- checkout을 통해 특정 commit시에 소스코드 내용을 확인할 수 있다.
원격저장소 만들기
- Case 1: 원격 저장소를 만들고 해당 원격 저장소를 로컬로 가져와, 로컬에서 작업하는 경우
- Case 2: 로컬에서 작업하던 내용을 원격 저장소로 올리는 경우
Case 2: 로컬 -> 원격
git remote add [별명] [원격저장소 주소]
git remote add origin https://github.com/namyj/gitfth.git\
git remote [-v] # 연결된 원격저장소 확인
git remote remove [name] # 원격 저장소 연결 삭제
- 로컬 저장소에 원격 저장소(주소}를 orgin(별명)으로 연결
- 로컬에 여러개의 원격 저장소를 연결할 수 있음
- origin: 주로 동기화하는 저장소
git push
로컬 저장소(기준)에서 원격 저장소로 작업을 보낼 때 = 'push 한다'
git push [-u] origin master # 이후 git push 사용
- 로컬 저장소의 현재 branch를 origin의 master 브랜치로 push
- -u : 로컬 저장소의 branch와 원격 저장소의 master branch를 연결시켜줌, 한번만 사용
해당 repository로 가면 파일이 올라간 것을 확인할 수 있음
push시 error 발생하면
git config 를 초기화 -> git pull -> git push 반복적으로 수행
동기화
git commit --amend # 이전 commit의 메시지를 수정할 수 있음
--amend: 직전 commit을 수정할 수 있음. 단, 원격 저장소에 올리기 전에!(push 이전까지만)
# home
git clone [repository 주소] [디렉토리]
git pull
git push
# office
git clone [repository 주소] [디렉토리]
git pull
git push
- 원격 저장소를 cloning한 후, pull을 수행해 로컬 저장소에 동일한 작업환경을 만들 수 있다 = 동기화
- git pull -> 작업 수행 -> git push
SSH
cmd 창 or git bash에서 아래 명령어 수행
ssh-keygen
- ssh key를 생성
- 두개의 파일이 생성됨
- id_rsa : private key
- id_rsa.pub : public key
로컬에 private key을 저장하고, 접근하고자 하는 서버(원격 저장소)에 public key를 저장하면 ssh로 접근이 가능해짐
깃허브 settings에서 ssh key를 등록하고, private key를 저장한 로컬에 ssh 주소를 사용해서 cloning하면 push&pull 시 ID, password를 입력하지 않고 접근이 가능해진다.
원격 저장소 원리
git remote add [origin] [원격 저장소 주소]
- remote에 대한 정보가 '.git/config' 파일 안에 저장되어 있음
- url : remote 주소
- fetch : 원격 저장소에서 정보를 가져와 로컬에 저장하는 위치
git push --set-upstream origin master
- 현재 branch를 원격 저장소(upstream)인 origin으로 push하겠다
- master branch에 대한 정보가 추가됨
- master branch가 원격 저장소 origin에 연결됨.
# 파일 수정
git commit
git push
- 파일을 수정하고 commit을 하면, 로컬의 /refs/heads/master가 가르키는 파일이 변함
- push를 하면, /refs/remote/origin/master가 가르키는 파일이 master의 최신 commit으로 바뀜
- (push 전까지는 원격 저장소와 로컬에 차이가 생기는 이유)
git pull & git fetch
원격 저장소의 파일을 로컬로 불러오는 명령어
git pull
- /refs/heads/master 변함 (로컬의 master 브랜치가 가리키는 최신 commit)
- /refs/remote/origin/master 변함 (원격저장소의 master 브랜치가 가리키는 commit) //위와 동일
- ORIG_HEAD : 이전 commit을 가리킴
git fetch
git diff HEAD origin/master # 차이점 비교
- origin/master가 로컬 master를 앞지름 (?)
- /refs/heads/master 변하지 않음
- /refs/remote/origin/master 변함 (원격저장소의 master 브랜치가 가리키는 commit)
- 원격 저장소의 내용과 로컬 저장소의 내용을 확인할 수 있다.
차이점을 확인후 문제가 없으면 로컬과 원격 저장소를 병합하면 된다.
git merge origin/master
git pull | git fetch |
파일을 받고, merge까지 수행 | merge를 별도로 해야함 |
'CS' 카테고리의 다른 글
IntelliJ 단축키 정리 (0) | 2023.05.19 |
---|---|
[이슈] MySQL Workbench 실행 시 반응 없음 - vcruntime140_1.dll이 없어 코드 실행을 진행할 수 없습니다 (0) | 2023.05.18 |
[생활코딩] 지옥에서 온 Git - 원격저장소 (0) | 2021.10.02 |
[생활코딩] 지옥에서 온 Git - 원리 (0) | 2021.10.01 |
[생활코딩] 지옥에서 온 Git - Branch&Merge 원리 (0) | 2021.09.25 |