git push 를 해보며 겪은 세 가지 에러
- 깃허브로 push 도중 에러 (git에 add/commit 을 안함)
- 비밀번호 에러 (깃허브 토큰)
- ! [rejected] 에러 (원격저장소에서 직접적인 수정)
& git branch 명 변경 master > main
1. 깃허브로 push 중 에러
git remote add origin "깃허브 주소"
입력 후 아래와 같은 에러가 발생
push 까지의 순서 git diagram
(이미지 출처 : https://support.nesi.org.nz/hc/en-gb/articles/360001508515-Git-Reference-Sheet)
해결 방법 : add / commit / push 순서를 지켜라.
2. 비밀번호 에러 (깃허브 토큰 미사용)
user password 입력 후 아래와 같은 에러가 발생
remote: Invalid username or password.
fatal: Authentication failed for '깃허브 레포지토리 주소'
- Git Push 명령어를 사용하면 Git의 username과 password를 요구하게 되는데, password를 정확하게 입력 했음에도 에러가 발생한다.
- 21년 8월13일 부터는 모든 Git 작업에는 비밀번호 대신 토큰(또는 SSH 키) 인증이 필요 하다고 한다.
해결 방법 : password 입력 부분에 깃허브에서 발급받은 토큰을 입력하면 된다.
3. ! [rejected] 오류
git push origin main
입력 후 아래와 같은 에러가 발생
- Github에서 README 에 오타가 보이길래 원격저장소에서 직접 수정한 후 몇 분 뒤 로컬저장소의 프로젝트를 푸시하려고 하는데 오류가 발생한다. 오류명은 ‘! [rejected]’이다. 간단히 말해서 충돌이 일어났다고 한다. 원격저장소 커밋보다 로컬저장소 커밋이 더 오래되었을 때 발생하는 오류라고 이해했다. 해결 방법을 찾아보니
git push origin +main
브랜치명 앞에 '+' 를 붙이면 강제 push, 즉 덮어쓰기가 가능하다고 한다. 하지만 다른 팀원들의 커밋이 날아가는 대참사가 발생한다는 댓글을 보고 더 찾아보니.. 'pull'을 안 했기 때문이f란다. 원격 저장소 커밋을 먼저 로컬 저장소로 pull한 다음 수정 내용을 동기화하고 그 다음 push를 하니 정상적으로 작동한다.
해결 방법 : 깃허브에서 수정하는 짓 금지 / (pull 해야 할 때를 잘 알아야 함.)
& git branch 명 변경 master > main
- git의 default 브랜치 명은 master로 생성된다.
- 때문에 브랜치명 불일치로 오류가 발생할 수 있다.
- Github를 이용하면서 레포지토리를 생성하면 기본 브랜치명이 main 으로 되어 있어 혼란스러울 수 있다. 이는 Black Lives Matter 운동으로 master/slave 등의 IT에서 사용되는 용어에도 정화가 필요하다는 의식이 생기고 있을 때 Github에서 2020년에 레포지토리의 기본 브랜치명을 master에서 main으로 변경하였기 때문이다.
- git branch 명을 ‘master’ 에서 ‘main’ 으로 바꾸는 입력은 다음과 같다.
git config --global init.defaultBranch main