다른 사람과 함께 협업하고 있는 레포지토리에 내가 작업한 내용을 올리려고 하는데

내가 작업하는 동안 다른 사람이 커밋을 했다면 어떻게 될까요?

 

로컬 레포지토리가 원격 레포지토리보다 이전 버전을 가리키고 있기 때문에,

바로 커밋할 수는 없을거에요...

 

그래서 로컬 저장소와 원격 저장소의 버전을 맞춰주기 위해 git pull을 해봤더니,

다음과 같이 에러가 발생하네요!

$ git pull
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 4), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), 2.11 KiB | 56.00 KiB/s, done.
From https://github.com/shinyewon/Jumping_cat
   8655375..f2be300  main       -> origin/main
error: Your local changes to the following files would be overwritten by merge:
        plan.cpp
Please commit your changes or stash them before you merge.
Aborting
Updating 8655375..f2be300

 

error: Your local changes to the following files would be overwritten by merge:
        plan.cpp

협업자 중 누군가가 나와 같은 파일을 수정했다면 merge과정에서 문제가 생길 수 있기 때문에 

이런 에러를 띄워주고 있네요!

 

Please commit your changes or stash them before you merge.라고 하네요.

그럼 먼저 commit을 통해 해결해 볼게요.

 

1. 첫번째 해결법: 수정 내용 커밋하기

다음 명령어들을 순차적으로 실행해주세요!

git add .
git commit -m "[커밋 메시지 입력]"
git pull
git push

그러면 아래와 같이 2개의 커밋을 생성하면서 수정 내용이 원격 저장소에 제대로 반영됩니다.

 

흠..하지만 저는 개인적으로 2개의 commit이 불필요하게 생성되는 것 같아 1개의 commit만 생성하고 싶은데요,

그렇다면 git stash를 사용하면 됩니다!

2. 두번째 해결법: git stash

- git stash 명령어를 통해 작업하던 내용을 임시적으로 저장해주세요!

- git pull

- git stash apply를 통해 방금 임시적으로 저장한 내용을 다시 가져와줄게요.

- 다음 명령어들을 순차적으로 실행해주세요!

git add .
git commit -m "[커밋 메시지 입력]"
git push
git stash clear

그러면 깃허브에 1개의 커밋을 생성하면서 수정 내용이 원격 저장소에 제대로 반영됩니다.

 

읽어주셔서 감사합니다:)

'Git' 카테고리의 다른 글

github 잘못 올라간 파일 히스토리까지 삭제하기  (0) 2023.08.23
[Git] Open Source Software  (0) 2023.04.06
Git 협업하기  (0) 2022.12.30
브랜치 사용하기  (0) 2022.12.30
커밋 다루기 정리 노트  (0) 2022.12.30

+ Recent posts