🔗 [얄팍한 코딩사전] 제대로 파는 Git & GitHub 와 함께하는 깃/깃허브 공부
[2022.03.30]
✔ 협업하는 동료와 커밋이 겹치는 상황이라면?
pull과 push가 어긋난 상황 해결하기
상황
로컬에서 a를 수정하고 커밋 (푸시X) 깃허브(동료)에서 b를 수정하고 커밋 (푸시O) ↓ 커밋은 내 컴퓨터에서 먼저했는데 깃허브쪽에서 먼저 푸시가 된 상태 이 후 로컬에서 푸시하면 이미 깃허브에 새 버전이 있어서 불가! |
푸시하려면 내 컴퓨터가 원격보다 최신이어야한다!
그래서 깃허브꺼를 pull해와야한다
근데 이미 커밋내역이
로컬에서는 순서가 이전커밋 → a수정커밋
깃허브에서의 순서는 이전커밋 → b수정커밋
그래서 pull 하려면 둘 중 하나 골라야한다
이럴때 pull의 두가지 방법
어긋났을 때 pull 의 방법 | |
merge 방식 | rebase 방식 |
git pull --no-rebase | git pull --rebase |
분기된 두 로컬과 깃허브를 하나로 맞춰진다 | 이전커밋→깃허브의 b커밋→로컬의 a커밋 순으로 맞춰진다 |
맞춰지고 push하면 해결!
✔ 협업하는 동료와 커밋이 충돌되는 상황이라면?
충돌 발생 해결하기
위에 해결방법과 비슷하다
상황
로컬에서 member에 피카츄 추가 커밋 (푸시X) 깃허브에서 member에 이브이 추가 커밋 (푸시O) ↓ 깃허브에서 먼저 push 된 상태 로컬이 최신이 아니라서 push 불가 |
마찬가지로 로컬이 최신이 아니니까
pull을 해와야한다.
하지만 같은 걸 수정했기 때문에 또 둘 중 하나 선택해야하는 상황
이럴 때 pull의 두가지 방법
충돌할 때 pull 의 방법 |
||
merge 방식 | rebase 방식 |
|
git pull --no-rebase | git pull --rebase |
|
그냥 선택하게한다. 둘 중 하나 하거나 아예 새로운 걸 해도 된다 선택하고 git add. git commit :wq 하면 끝 |
리베이스는 일단 깃허브를 먼저 붙힌다. | |
여기서 깃허브(동료) 커밋을 고르고 git add. git commit 하면 커밋을 깃허브만 커밋에 추가함. 로컬 커밋은 없었던 것 처럼 |
반면에 로컬 커밋을 고르고 git add. git commit :wq 하면 기존커밋-동료커밋-로컬커밋으로 맞춰진다 |
|
커밋수 2개 이전 커밋, 깃허브 커밋 |
커밋수 3개 이전 커밋, 깃허브커밋, 로컬커밋 |
즉, pull할 때 rebase 방식은
뭘 선택하느냐에 따라서
추가되는 커밋의 수가 달라질 수 있음
참고로 pull할 때의 rebase는 협업시 사용하기도 한다!
브랜치 합칠 때만 사용안함
✔ 로컬의 내역 강제 push 하기
로컬의 내역 충돌 전으로 reset
원격에 강제 적용 |
git push --force |
협업할 땐 쓰지말자 ...
이로써 강의 무료버전은 끝
아주 기본적인 깃과 깃허브의 구조, 사용법은 알게 되었다
하지만 가시지 않는 이 갈증
그래서 구매!세일 D-3이라는데 사라는거 아닌가요?
아무튼 앞으로도 잘해보자구
'🧠 저장 > Git' 카테고리의 다른 글
[깃/깃허브] 이전 단계로 이동, 이동 취소, fetch, 원격의 브랜치 가져오기 (0) | 2022.04.07 |
---|---|
[깃/깃허브] Snapshot, Working directory, Staging area (0) | 2022.04.01 |
[깃/깃허브] 토큰, 리포지토리 생성, 로컬과 원격 (추가, 다운) (0) | 2022.03.29 |
[깃/깃허브] 이전 커밋으로 reset & revert / 브랜치 합치기 merge & rebase (0) | 2022.03.29 |
[깃/깃허브] 기본 개념 (드림코딩, 노마드 코더, 얄팍한 코딩 사전) (0) | 2022.03.28 |