기존의 로컬 작업 환경을 GitHub repo에 올리는 방법
1. git remote add origin (원격저장소 주소)
- 로컬의 Git 저장소에 원격 저장소로의 연결 추가
2. git branch -M main
- GitHub 권장 - 기본 브랜치명을 main으로 변경
3. git push -u origin main
- 로컬 저장소의 커밋 내역들 원격으로 push(업로드)
- -u 또는 --set-upstream: 현재 브랜치와 명시된 원격 브랜치 기본 연결하는 설정
- 위의 설정 후 git push만 수행해도 main의 push는 자동으로 origin으로 push된다.
기타
git remote : 연결된 원격 브랜치의 이름 확인 가능
git remote -v : 원격의 자세한 내용 확인 가능
GitHub repo 내용을 내려받는 경우
1. git clone (원격저장소 주소)
- 현재 디렉토리로 원격저장소의 내용들 복사해서 가져온다.
git push
- add, commit으로 끝나는게 아니라 원격 저장소에 까지 내용을 반영해야 하기 때문에
- git push를 이용해 원격 저장소에 저장함
git pull
- 원격 저장소의 내용을 내 pc 로컬로 가져온다.
- 충돌되는 내용이 없다면 정상 작동할 것이다.
git push pull 숙지사항
- 원격 저장소의 변경내역이 있어 pull 해야하는 상황 + 로컬작업으로 push 해야하는 상황일 때
- pull로 원격 저장소의 내용을 먼저 적용하고 push를 해줘야 한다.
pull + push 방법
- pull + push 방법에는 2가지 방법이 있다.
- merge를 이용한 방법
- rebase를 이용한 방법
merge를 이용한 방법
git pull
git pull --no-rebase
- 위의 작업으로 merge 방식으로 pull 한 다음에 ((로컬 변경 내역) + (pull 내역)) merge를 push로 올리면 된다.
충돌나면 충돌부분 수정하고
add, commit 수행하면 된다.
rebase를 이용한 방법
git pull --rebase
- 위의 작업으로 원격내용 뒤에 로컬내용을 rebase 해서 push하면 (pull 내역) - (로컬 내역) 으로 올라간다.
충돌나면 수정하고
add,
git rebase --continue 하면 된다.
git pull --rebase는 git rebase xxx와는 다르게 협업 시 사용해도 혼동을 초래하지 않는다.
원격의 내용을 먼저 붙이고 그 다음 push할 나의 작업 내용이 붙기 때문에
원격의 내용이 HEAD가 된다.
강제 push
- 원격 내용을 pull로 받고 push해야 정상 작동
- 하지만, 원격 내용에 문제가 생겼을 경우, 로컬에서의 변경사항으로 강제로 맞춰줘야 할 때 사용
- 강제 push하면 pull할 내용 삭제하고 로컬의 내용 push 해버림
git push --force
- pull 할 내용을 삭제해 버리기 때문에 협의가 된 상황에서 해야한다.
- 아니면 다른사람 작업물 날라가서 큰일난다.
'DevOps > Git' 카테고리의 다른 글
[Git] stash (0) | 2022.10.24 |
---|---|
[Git] 원격저장소 브랜치 (0) | 2022.10.24 |
[Git] merge /rebase 충돌(conflict) (0) | 2022.10.23 |
[Git] branch / merge / rebase (0) | 2022.10.23 |
[Git] revert / reset (0) | 2022.10.23 |