다른 사람이 push 하여 먼저 원격 저장소에 push 하여, 본인이 작업 브랜치를 원격 저장소 push 가 거부된 상황이다.(즉, 내 로컬에 있는 버전이 최신버전이 아니기 때문에 git 에서는 현재 원격 저장소에서 최신버전을 pull 받고 다시 push 하라는 의미)
원격 저장소를 다시 pull 받으면 해결된다.
아직 git 이 익숙하지 않아 연습이 필요하다면, 아래 "push 충돌 예시"를 따라하면 된다.
git pull origin [원격 저장소]
$git branch testBranch
$git add fff.txt
$git commit -m "add fff.txt"
3. push 할 원격 저장소 dev 에 ggg.txt 라는 파일을 추가한다.(추가를 하게 되면 [작업 시점 dev 버전 != 최신 dev 버전])
Create new file 들어가서 ggg.txt 생성 후 commit 해주면 dev에는 ggg.txt 파일이 추가된다
4. testBranch -> dev 브랜치 변경 후, testBranch merge 하고 원격 dev 에 push 한다.
$git checkout dev
$git merge testBranch
$git push origin dev
push 이후 에러가 발생한다. 여러 힌트들이 나오는 데, 에러가 발생하는 이유는 처음에도 말했듯이 최신 dev 버전에 맞지 않아, 다시 원격 최신 dev pull 받은 후 작업하라는 내용이다.
5. 최신 버전 dev를 pull(pull 은 단순히 프로그램을 받는 것 뿐만 아니라 merge 까지 확인해준다)
$git pull origin dev
위 명령어를 실행하면 왜 merge 가 필요한지 commit 메시지에 내용을 적으라는 내용이다.
아래 순서대로 한다. 본인 message Merge branch 'dev' of https://github.com/Daniel0915/GitPractice into dev
내용 대신 "충돌 해결" 이라고 적었다.
a. i를 누른다 (commit message를 입력하기 위해)
b. merge에 대한 message를 입력한다.
c. esc를 누른다.
d. :wq를 입력한다.
f. enter를 누른다.
[참고 블로그 : https://velog.io/@ssmin0606/%EA%B0%9C%EB%B0%9C%ED%88%B4-Please-enter-a-commit-message-to-explain-why-this-merge-is-necessary-especially-if-it-merges-an-updated-upstream-into-a-topic-branch-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-git-bash]
그러면 "충돌해결" 이라는 commit 이 한 개 더 생기게 된다. 총 2개의 커밋이 생성됐다.
$git push origin dev