Develop/gitHub

[gitHub] 이미 만들어진 원격 저장소 clone 받아 협업하기 (pull, push 오류 해결 등)

마이구미포포 2022. 5. 22. 17:26

멀쩡하던 깃허브가,, 갑자기 vsc에서 뭘 하나 잘못 건드려서 원격-로컬 연결이 끊어져버렸다ㅠㅠ
다시 연결하려고 몇번 시도해 보았으나.. 에러가 발생

처음 vsc 터미널로 'git clone 레포주소' 를 통해 clone을 받았으나 pull을 받으면 다운만 되고 반영이 안되는 문제가 발생..

원래는 clone을 받고 새 브랜치를 생성해서 협업을 많이 하는데 나는 이미 브랜치가 만들어져 있는 상태라 새 브랜치를 만들지 않고 기존 브랜치에 만들고싶어서 브랜치를 만들지않았다 ㅠㅠ

그래서 결국 다른 방법으로 clone 받고 여러 시도 끝에 오류를 해결하였습니닷


원격 저장소 clone 받기 (window)

1. vsc를 들어간다
2. shift + ctrl + p 를 누르면 git 명령어를 칠 수 있는 box가 나온다 (mac은 shift + command + p)
3. 창이 뜨면 git clone를 치고 선택해준다

3.  Clone 할 원격 레포 주소 복사 붙여넣기

4. 이제 이 상태에서 복제를 눌러주면 어디에 저장할지 파일 창이 뜨고, 파일을 선택해주면 clone이 완료

이 과정을 다 하면 내 로컬 파일에 clone이 완료되고, 이 파일에서 코드를 작성해주면 된다!


코드 수정 후 PUSH

clone 받은 파일에 코드를 수정하고, 내 브랜치에 push 하려고

> git checkout branchname
> git push origin branchname

이렇게 하니까

Everything up-to-date

이런 에러가 뜨면서 갑자기 코드가 사라졌다 ㅠㅠ!! 그래서 눈물을 머금고 다시 코드를 수정한 후..

git init
git add .
git commit -m "~"
git push origin branchname

이렇게 다시 커밋 후 push 해주니까 정상적으로 작동이 되었다

clone 후 기존 branch checkout > branch 연결 확인후 commit, push 를 해주니 정상적으로 작동이 되었다..


다른 브랜치에서 PULL 받기

이제 다른 사람이 내 코드를 pull 받아야 하는 상황이 되었는데 여기서도 오류가 났다

첫 오류
: clone 을 다시 받고 pull 을 받으려니 

fatal: refusing to merge unrelated histories

이런 에러가 떴다

기존 히스토리와 파일이 너무 관련없을 경우 깃허브에서 차단을 한다고한다. 이럴경우

git pull origin branchname --allow-unrelated-histories

이렇게 pull 옆에 --allow-unrelated-histories 를 붙여주면 관련없는 히스토리 파일에도 pull을 받을 수 있게된다

두번째 오류
: pull 하기 전에 commit을 하라는 에러가 떴다

error: You have to not concuded your merge (MERGE-HEAD exists).
hint: Please, commit your changes before merging.
fatal: Exiting because of unfinished merge

이 에러는 vsc가 하라는 대로 수정사항 커밋을 다시 해주고 (이미 커밋을 했다면 다시 커밋을 하던가 새로 수정사항을 만든 다음 다시 커밋을 해주었다) pull을 다시 하였더니 정상적으로 pull이 되었다


정리

 프로젝트 도중 깃허브 에러가 나서 파일을 다시 만들어 clone 을 받아야할 때, 보통은 clone을 받고 새 브랜치를 만들어 협업을 한다
하지만 새 브랜치를 만들지 않고 기존 브랜치를 사용하고싶다면

1. vsc을 통해 클론 받은 후 vsc 좌측 메뉴 세번째 변경사항 - 소스제어 레포지토리를 통해 레포와 연결을 확인한다
2. git checkout branchname 을 통해 push하려는 브랜치를 origin으로 연결해주고
3. git init ~ 부터 다시 해서 커밋한 후 push 하면 정상적으로 작동한다
4. 새로 만든 파일이 기존 브랜치와 관련된 history가 없기 때문에 그걸 허용하는 말을 추가해준다

이거 해결하느라 시간을 많이 썼다 ㅠㅠ 기억해뒀다가 다시 같은 에러가 발생한다면 빠르게 해결해야겠다