에러시 [Git 명령] push/pull

기합… 정말 기합 때문에 진로에 대해 다시 생각할 뻔했어Git Bash 에서 “git origin master” 명령어는 “git commit” 명령을 이용하여 업데이트한 데이터를 원격 저장소에 업로드 하는 역할을 한다.업로드할 때 캡처하지 못해 대충 적어봤지만 정상적으로 업데이트 업로드될 때는 이렇게 하는 게 맞다.저기 있는 명령어를 오자 없이 잘 따라하면 되는데… 이상하게 자꾸 에러 메시지를 받았어. 그것도 베리에이션별로, 풍부하게! 그래서 모든 프로젝트와 논문을 쓸 때 단련해 둔 구글링 실력을 발휘해 해결 방법을 모색해 보았다.

  1. git push origin master 오류 commit까지는 잘됐지만 원격 저장소에 push(업로드)가 안 되는 오류였다.[rejected] 라고 밑에는 에러 메세지와 힌트가 나와있었다. 힌트로 pull 명령어를 실행해 보고, 또 push해라, 라고 되어 있었다.구글에 내가 받은 에러 메시지를 쳐 보니 나 같은 사람이 많은지 stack over flow 등에 해결 방법이 많이 올라와 있었다. 거기에 담긴 답변도 결국 힌트 메시지 같은 것이었다.그랬는데…
  2. 2. git pull origin master: “Already up-to-date” pull 명령어를 실행하면 이미 up-to-date라 하면서도 아무런 변화가 생기지 않았다. 여기서 2차 패닉 상태에 빠졌고 다시 구글링을 했다.

출처 : https://stackoverflow.com/questions/25411366/git-repo-says-its-up-to-date-after-pull-but-files-are-not-updated 회답자의 어드바이스대로 해 보았다. 하지만 결과는…실패였다. 이번도 역시 로컬 저장소와 리모트 저장소 모두 변화가 없었다.

3. git pull origin master: “fatal: refusing to merge unrelated histories” 이게 어떻게 겪었는지 기억은 안 나는데 이런 pullerror도 경험했다. 구글에 fatal 메시지를 그대로 검색해 보니 이것도 무슨 방법이 나와서 그대로 따라해 봤다.강제적으로 unrelated histories의 병합을 허용하여 풀로 하는 명령어이다.이쯤에서 강제 커맨드에 눈을 뜨게 되고, 또 push 에러가 나오면 이런 도전이 된다.

4. git push -forigin master / git push -uorigin + master 강제명령러를 개의치 않고 강제로 push를 하는 명령어이다.처음 push오류에 대해 구글링 했을 때 자주 내려온 명령이었지만 어디까지나 일시적인 효과를 위해 사용하는 해결책이라는 경고도 많아 겁이 나서 쓰지 않았다. 하지만 풀로도 경험하고 온갖 어려움을 겪어 왔기 때문에 강제로 올리는 것도 나쁘지 않다는 위험하다는 생각이 들었다.결과는 당연하지만 push 성공! 그러나 큰 부작용이 있었는데: 이전에 업로드한 파일은 모두 삭제되고 새로운 파일만 업로드 된 것이다. 그것이 원격 repository 뿐이라면 사라졌던 파일을 다시 commit해서 push하려고 했지만 가장 큰 문제는 내 컴퓨터 로컬 저장소에 있는 파일조차 사라져 버렸다. 문자 그대로 파일이 모두 날아가 버린 것이다.wwwwwww

4. 해결 : 로컬 저장소 삭제 후 처음부터 다시! 최종적으로는 ‘왜 더 일찍 이렇게 생각할 수 없었을까’라는 가장 원시적인 방법으로 해결하기로 했다.그것은 내 컴퓨터에 있는 repository를 삭제하고 처음부터 파일을 생성하고 cloning하여 초기화시키는 것이었다.이 작업은 마음도 가장 편하고, 무엇보다도 가장 편했다! (1) 원격 저장소와 sync로 되어 있는 폴더를 영구히 삭제했다. (2) GitBash로 새롭게 폴더 생성하고 파일을 가져오는 repository 주소를 복사하고 clone 했다. (3) 만약을 위해 fetch 명령으로 먼저 나의 repository와 fork한 repository를 동기화했다. 그래서 복사하고, 새로운 폴더에 붙여넣었다!(6) 다시 commit 와 push 명령을 실행했다. 결과는 성공!(7) 다른 폴더에 보존한 파일도 있었지만, 그런 백업 작업을 하고 있지 않았기 때문에 완전하게 유실된 것도 있었다. 그런데, 정말 다행스럽게도 pull request 리스트에 들어가 보니, 내가 저번에 올렸던 파일의 기록이 남아있었다. 그래서 다시 복사!(8) 처음부터 다시 push를 하면 기존 pull request가 사라지고 새롭게 request를 했다.

5. 왜 이런 오류가 났을까?기합 사용법이 미숙해서 큰 실수를 했다. 왜 그렇게 생각했는지 모르겠지만, 나는 처음에 기합에 파일을 올릴 때는 한 폴더에 묶이지 않고 전부 하나씩 올려야 한다고 생각했다. 폴더마다 올릴 수 있다는 사실을 알고 이전에 올린 장미 파일을 또 다른 폴더에 통합했는데, 이 과정에서 로컬 저장소와 원격 저장소 사이에 파일의 충돌이 일어난 것 같다.위의 에러를 경험하면서 알게 된 사실이지만, 키허브는 로컬 저장소와 원격 저장소의 상태가 항상 같아야 한다고 한다. 근데 내가 알아서 로컬 저장소 파일을 수정해놓고 원격 저장소한테 안 알려줘서… 이 사단이 벌어진 것이다! 크게 데였으니까 다시는… 절대로… 같은 실수를 반복하지 않겠어. 네버

6. 추가 : git push origin master permisssion denied 403 fork 한 repository에서 파일을 업데이트 한 후 내 파일을 다시 원격 저장소에 업로드 할 때 발생한 오류이다. 분명히 내가 파일을 업로드 하고자 하는 경로를 설정하지 않아서 생긴 오류인 것 같아.이것은 이하의 명령으로 간단하게 해결할 수 있었다.저기서 USER NAME은 내 ID로 되어 있어야 한다. 아마 내가 이렇게 바꾸기 전에는 내 아이디가 아니라 센터 계정이었을 거야

7. 추가: merge일 때 “Please enter a commit message…” 이것도 떴을 때 뭘 눌러도 눌리지 않았고 어떻게 해야 할지 몰라서 구글링 해봤는데 이런 게 있었다.

출처 : https://stackoverflow.com/questions/19085807/please-enter-a-commit-message-to-explain-why-this-merge-is-necessary-especially 처음에 얘도 에러인줄 알고 놀랐는데 다행이 아니었다는거! 아직 깃발허브에 적응하려면 더 많이 다뤄야할거 같다.

error: Content is protected !!