코드/Git 13

[GIT] remote it cannot be fast-forwarded git pull 시 발생하는 오류

이 오류는 git pull이 기본적으로 fast-forward 병합을 시도하기 때문에 나타납니다. 주요 원인 1. 로컬 변경 사항• 로컬 브랜치에 원격 브랜치와 충돌하는 변경 사항이 이미 커밋되어 있을 때. 2. 병합 불가능한 변경 사항 • 원격 브랜치가 로컬 브랜치에서 병합되지 않은 새로운 커밋을 포함하고 있어, fast-forward로 병합이 불가능할 때. 3. 브랜치 분기• 로컬 브랜치와 원격 브랜치가 서로 다른 히스토리를 가지고 있을 때. 즉, 두 브랜치가 동일한 조상(commit)을 공유하지 않는 경우.  해결 방법 1. 로컬 변경 사항 확인먼저 로컬 브랜치가 원격 브랜치와 충돌할 가능성이 있는 변경 사항을 확인합니다. 2. 수동 병합 시도git pull이 자동 병합에 실패한 경우, 수동 병합을..

코드/Git 2025.01.06

[Git] ahead, behind 의 정의

가끔 헷갈리는 경우가 있어서 정리합니다. behind의미: 현재 브랜치가 원격 브랜치에 비해 뒤쳐져 있음을 의미합니다.상황: 원격 브랜치에 추가된 커밋이 있고, 로컬 브랜치에는 없는 경우.원인: 다른 팀원이 원격 브랜치에 푸시(push)한 이후, 로컬에서 git pull을 하지 않았을 때 발생합니다.Your branch is behind 'origin/main' by 3 commits. 현재 로컬 브랜치가 origin/main 브랜치에 비해 3개의 커밋이 부족함을 의미합니다.pull 을 통해 변경사항을 가져 오면 됩니다. ahead의미: 현재 브랜치가 원격 브랜치에 비해 앞서 있음을 의미합니다.상황: 로컬 브랜치에서 커밋이 추가되었으나, 원격 브랜치로 아직 푸시(push)되지 않은 경우.원인: 로컬에서 ..

코드/Git 2024.12.26

[Git] 브랜치 강제 머지

가끔 하다 보면 develop 에서 파생된 브랜치지만 develop 과 내용이 너무 달라져서 최종 finish 머지를 진행하려고하면 어마무시한 conflict 가 발생하는 케이스가 있다. 최종 버전을 가진 브랜치(release 브랜치라고 하자) 가 기존 develop 의 모든 히스토리를 가지고 있고 충돌을 무시하고 release 브랜치로 다 덮어 쓰면 되는 상황이라면 강제 merge를 진행할 수 있다. 조금 무시무시한 상황이지만 release 브랜치 형상에 대해 전수 검증을 거친 결과물이라면 그래도 시도 할만 하다. 검색해보면 merge -X 뭐 이런거 있는데 다 복잡한 느낌이고 # upstream 공유 레파지토리 명칭 # 로컬 develop 브랜치에서 진행 git fetch upstream # rele..

코드/Git 2021.12.10

[Git] 태그 일괄 삭제

특정 이름의 태그를 일괄적으로 삭제하고 싶은 경우가 있다 로컬과 리모트 모두. 그럴때 썼다. 예를 들어 태그명에 2017 이 들어간 태그를 모두 지우고 싶다면, [shell] remote 먼저 삭제 git tag -l '2017*' | xargs git push --delete 로컬 삭제 git tag -l '2017*' | xargs git tag -d [/shell] 이렇게 하면 된다. 저 경우는 리모트 먼저 삭제하고 로컬을 삭제해야한다. 만약 로컬을 삭제하고 푸시를 넣으면 매칭 되는 태그가 없어 리모트에 있는 태그를 지울수 없다.

코드/Git 2020.12.11

[Git]로컬에서 리모트에 존재하는 브랜치로 새로이 체크아웃할때

협업시 리모트에만 존재하고 로컬에 존재하지 않는 브랜치를 로컬에서 동기화 해야할 경우 단순히 git checkout branch_name 해봐야 그딴 브랜치 찾을수 없다는 말만 뜬다 그럴때에는 git checkout --track -b origin/daves_branch 혹은 git fetch remote_name remotebranch_name:localbranch_name git checkout localbranch_name 의 방법이 있다 해보니 전자의 방법 --track 을 쓴 방법은 잘 안되네 후자가 더 정확할듯 하다 git fetch [remote] [remote branch]:[localbranch] git checkout -b [localbranch] [remote]/[remote bran..

코드/Git 2016.05.20