[깃/깃허브] 동료와 커밋이 겹칠 때, 충돌될 때 💥

🔗 [얄팍한 코딩사전] 제대로 파는 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이라는데 사라는거 아닌가요?

아무튼 앞으로도 잘해보자구