티스토리 뷰

직접 해보기

[Git] 강제로 push

Euning 2023. 8. 28. 17:02

오늘 하루종일 끙끙거렸던 과정 정리해본다.

다시는 헤매지맙시다.

1.상황

Git에 올려둔 branch가 오류가 생겨 clone이 정상적으로 되지 않는다.

clone 자체가 되지않기 때문에 해당 branch에 엎어치지 할 수 없을거라고 판단

 

2. 해결 과정

(1) 다른 branch 생성 후 강제로 push해보자

일단 branch 생성 후 정상적으로 동작하는지 확인

그리고 git 내에서 새 branch와 merge를 시도하였으나 -> Conflict가 발생 

git에서 pull request 후 내가 원하는 소스로 엎어치기하고 push를 진행해보았다.

git pull origin main

이때 다음과 같은 오류가 발생

error: The following untracked working tree files would be overwritten by merge:
Please move or remove them before you can merge.
Aborting

그래서 git clean을 해보았다

git clean -d -f -f

그리고 다시 pull 하면 정상적으로 받아짐

그리고 

그리고 다시 push

git push -u origin main

강제로 push 진행

git push -u origin main --force

또는

git push -u origin +main

그렇게 했더니 다음과 같은 에러 메시지가 발생한다.

failed to push some refs to ~~

원격 저장소에 내 로컬에 없는 파일이 있을 때 push 하면 발생하는 오류라고 한다.

또다시 pull 해서 진행해야한다고 한다. 근데 원격저장소에는 파일이 있고, 내로컬에는 없는게 맞는데 말이지..

왜냐면 몇가지 파일은 지울게 있었으니까.

 

(2) branch로 덮어서 병합

 

main branch로 전환한 후에 병합해본다.

git checkout main
//ours : 우리껄 쓰겠다 (현재 브랜치로 덮어서 병합)
git merge -Xours targetBranch

//theirs : 쟤네껄 쓰겠다 (목표브랜치로 덮어서 병합)
git merge -Xtheirs targetBranch

이것도 실패

 

(3) git 설정 삭제 후 다시 진행

// 로컬저장소의 git 히스토리 삭제 (.git)
rm -rf .git

// 로컬저장소 초기화
git init

그리고 다시 위에 했던 pull 및 강력 push 진행

다음가 같은 에러발생

fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.

 

이 때, remote repository를 읽을 수 없다고 하여 원격저장소 정보를 업데이트하였다.

그래도 똑같은 문제가 발생하여 원격저장소 연결 제거 후 재연결을 진행

// 원격저장소 정보 업데이트
git remote update

// 원격저장소 연결 상태 확인
git remote -v

// 원격저장소 연결 제거
git remote remove [원격저장소이름]

// 원격저장소 재연결
git remote add [원격저장소이름] [저장소URL]

그래도 같은 문제가 발생

그럼 혹시 Please make sure you have the correct access rights and the repository exists.

접근 권한 문제인가?

 

(4) 현재 로그인된 계정을 확인한다

git config user.name
git config user.email

계정을 변경하고 자 할 때는 뒤에 원하는 계정을 입력하면 된다.

git config user.name 이름
git config user.email 이메일

그리고 기존의 로그인 정보를 삭제한다.

난 Window라 다음과 같다.

제어판 > 사용자 계정 > 자격증명관리

git 관련 자격증명 클릭 후 제거한다.

 

 

그리고 push를 진행하기전에 다음과 같이 진행

// 작업 디렉토리 상의 변경 내용을 스테이징 영역에 추가 (커밋전의 변경분을 모아둔다.)
git add [파일/디렉토리 경로]

나는 현재 디렉토리의 모든 변경내용을 스테이징 영역에 추가하고 싶어 다음과 같이 진행 
git add .

// 작업 디렉토리와 스테이징 상태를 확인, 이 때 내가 추가하거나 수정하는 파일 목록을 확인할 수 있다.
git status
// commit
git commit -m "커밋 메시지 입력"

//push
git push origin main --force

그리고 commit후 push를 진행

github Login 창이 나왔다. 이 때 Personal Access Token으로 할지 브라우저로 할지 (Sign in with your browser) 뜨는데

나는 Token으로 하였고 push가 정상적으로 진행되었다.

 

처음부터 계정을 제대로 하고 진행했으면 바로 되었을까

근데 또 꼬여서 안되었을 것 같다.

계정 잘 맞추고 git 히스토리를 지우고 깔끔하게 pull 받아서 push하는게 답이었을 것 같다.

반나절을 이것저것 찾아보고 진행하느라 캡쳐는 없었으나 나름 답을 찾기위해 고군분투했다.

 

3. 참고

https://shortcuts.tistory.com/25

https://git-scm.com/docs/

https://hubring.tistory.com/38

https://hoohaha.tistory.com/31

https://www.daleseo.com/git-push/

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함