git push와 git pull, merge, fetch
깃허브에서는 아래와 같이 수정해서 커밋,

깃 로컬 레퍼지토이에서는 아래와 같이 수정하고 커밋.

그리고 푸쉬하면?

rejected 된다.
이미 다른내용으로 깃허브 원격저장소에 추가한 내용이 있는데
로컬저장소를 push해버리면
위에서 원격저장소에 추가했던 내용은 무시되고 그냥 덮어쓰게 되기 때문이다.
협업에서는 아주 중요한 내용이다.
이는
아래와 같은 그림이 되는데
여기에 다른 개발자분의 로컬저장소를 리모트저장소에 git push하고
나도 내 로컬저장소를 리모트저장소에 git push 를 하면 안된다는 것이다,

그래서 항상 push를 하기 전에 먼저 $git pull을 해야한다.

그러면
CONFLICT가 날 수 도 있는데 이는 이전에 포스팅했던 merge CONFLICT와 같은 경우다.
https://project-angieangel.tistory.com/97
깃 브랜치 merge CONFLICT!
깃 브랜치 기초 merge에서 주의해야 할 사항 CONFLICT! https://project-angieangel.tistory.com/96 깃 브랜치 기초(생성, 삭제, 체크아웃, merge) 위의 현재 내가 위치한 브랜치는 main (참고로 예전에는 master..
project-angieangel.tistory.com

했던 대로 merge CONFLICT를 해결하고 커밋하면


$git pull과 같은 의미가 된다.

$git pull이 해결됬으니 $git push를 하면
이제 잘 된다.

211010 fetch추가
git pull을 할때 리모트 레포지토리에서 가져온 브랜치의 내용은 merge하지 않고
딱! 가져오기만 할 수도 있는데 $git fetch 이다.
fetch는 리모트 레포지토리에 있는 브랜치의 내용을 일단 가져와서 merge하기 전에
점검해야할 필요가 있을 때 사용하거나
리모트 레포지토리에 있는 브랜치의 내용과 내가 작성한 코드를 비교해서 잘못된 부분이 없는지
검토해야 할 때 사용한다.

즉, fetch를 사용하는 경우는
$git pull 을 하기는 내 내용이 다 덮어씌워져버리기에 부담스럽고 변경사항은 확인해야 할 때이다.
(물로노 리모트 레포지토리의 브랜치를 검토할 필요없이 바로 합치고 싶으면 pull하면 됨)
깃허브 리모트레퍼지토리에서 아래와 같이 수정하고

$git fetch 로 fetch를 하면

pull하지 않았기 때문에 내 브랜치의 내용은 추가되지 않았고,

$git diff로 비교하고 싶은 두 브랜치를 적으면 당연히 계속 pull하지 않은채로 그 내용을 확인할 수 있다.

그러면 리모트레포지토리의 브랜치에 문제가 있는 것을 확인했을 때 해결 방법은?
첫번째.
리모트레포지토리에 잘못된 코드를 추가한 개발자에게 함수를 지우고 다시 리모트 레포지토리에 올려달라고 하기
두번째.
스스로 리모트레포지토리에 잘못된 부분을 알아서 해결하고 다시 git push 하기
만약 두번째 방법을 선택했다면
이제 merge해서 내용을 수정하고

다시 커밋해서 push 하면된다.


잘 고쳐졌다. ^^