push / clone / pull 개념
A 의 로컬 저장소에 있는 파일을 원격 저장소로 add & commit & push (원격 저장소로 파일을 올리는 것 = 최신화 시키는 것)
B는 원격 저장소의 가장 최신 파일을 본인의 로컬 저장소로 clone (A가 올린 파일을 내려받는 것)
B도 A와 마찬가지로 로컬 저장소에서 일부 파일을 수정한 뒤 원격 저장소로 add & commit & push
A는 B가 수정한 파일 (원격 저장소에 업데이트된 파일)을 pull 하여 가져오고 병합함
clone은 내 로컬 저장소에 원격 저장소의 파일을 처음 내려받는 것
pull은 내 로컬 저장소를 원격 저장소와 동일하게 최신화 시키는 것
clone 명령어
git clone https://github.com/[github id]/[repository name].git
현재 git bash를 접속한 경로 하위에 repository 이름으로 된 폴더가 생성되고, 그 폴더 에 파일들이 내려받아진다.
git clone https://github.com/[github id]/[repository name].git .
repository 이름으로 된 폴더를 생성하지 않고 현재 폴더에 바로 파일들을 내려받으려면, 명령어 마지막에 . 을 붙여줘야한다.
원격 저장소의 파일을 로컬 저장소로 내려받은 뒤 로컬에서는 파일 수정이 가능하지만, 수정한 파일을 다시 원격 저장소로 올리려면 권한이 필요하다.
repository Settings > Collaborators > Add people 에서 추가해주어야 한다.
pull 명령어
git pull
git pull origin main
그냥 git pull 만 입력해도 실행된다.
push가 겹친 경우
A와 B 모두 프로젝트 clone 받은 뒤, 같은 파일을 수정하는 경우를 예로 들어보자.
1 2 3
A clone --- push
B clone --- ---- push => error
A와 B 모두 가장 최신 상태(1)인 파일을 clone 받게 된다.
A가 파일 수정 후 push하게 되면 이 때 가장 최신 상태는 (2)가 되지만, B는 clone 이후 새로 pull 받지 않고 (1) 상태의 파일을 수정하여 push하려고 하니 에러가 발생한다.
이 때 해결 방법은 두가지이다.
1. 로컬 main과 원격 main을 다른 브랜치로 보고 병합
git pull --no-rebase
2. 시간상 순서대로 병합
git pull --rebase
이 포스팅은 알잘딱깔센 GitHub 강의를 수강하며 작성되었습니다.
[무료] 30분 요약 강좌 시즌4 : 알잘딱깔센 GitHub - 인프런 | 강의
알아서! 잘! 딱! 깔끔하고! 센스있게! 정리하는 GitHub 핵심 개념 책의 무료강의입니다. 해당 책과 Notion 링크도 무료로 다운로드 받을 수 있습니다. 비영리 프로젝트로 교재활용도 허락없이 가능합
www.inflearn.com
'Git' 카테고리의 다른 글
[Git] fork / pull request(PR) (0) | 2024.03.21 |
---|---|
[Git] branch (0) | 2024.03.15 |
[Git] repository README.md 수동 생성 및 하위 폴더 생성 방법 (0) | 2024.03.11 |
[Git] Git vs. GitHub (0) | 2024.03.10 |
[Git] Git 설치 및 초기 설정 (window 버전) (0) | 2024.03.08 |