Git 원격 URL 변경 후 원격 거부 (얕은 업데이트는 허용되지 않음)
Git 버전 관리하에 프로젝트와 서버 및 로컬 컴퓨터 모두에서 작업했습니다. 원래 원격 원본을 로컬 컴퓨터로 설정했지만 이제이를 BitBucket으로 변경하고 싶습니다.
서버에서 나는 명령을 사용했다.
git remote set-url origin bitbucket_address
그러나 이제 프로젝트를 푸시하려고하면 오류가 발생합니다.
! [remote rejected] master -> master (shallow update not allowed)
이 원인은 무엇이며 어떻게 해결합니까?
git clone --depth <number>
로컬 버전을 복제 하는 데 사용 된 것 같습니다 . 결과적으로 얕은 복제가 발생 합니다. 이러한 복제본의 한 가지 제한 사항은 복제본을 새 저장소 로 푸시 할 수 없다는 것 입니다.
이제 두 가지 옵션이 있습니다.
- 현재 또는 누락 된 기록에 대해 신경 쓰지 않으면 이 질문을 살펴보십시오.
- 전체 기록을 유지하려면 계속 읽으십시오.
그래서 당신은 당신의 역사를 유지하고 싶습니까? 즉, 저장소 를 해제 해야합니다. 이렇게하려면 기존 리모컨을 다시 추가해야합니다.
git remote add old <path-to-old-remote>
그런 git fetch
다음 이전 리모콘에서 남은 히스토리를 가져 오는 데 사용 합니다 ( 이 답변 에서 제안한대로 ).
git fetch --unshallow old
이제 새로운 원격 저장소로 들어갈 수 있습니다.
참고 : 복제를 해제 하지 않으면 분명히 기존 리모컨을 다시 제거 할 수 있습니다.
리포지토리가 origin
이고 원래 리포지토리가 upstream
다음 과 같은 경우 :
git fetch --unshallow upstream
새 리포지를 그대로 푸시하려면 다음을 시도하십시오.
- 먼저
old git folder
현재 리포지토리에서sudo rm -rf .git
- 그런 다음 자식을 다시 초기화하십시오.
git init
- 그런 다음 새로운 원격 저장소를 추가하십시오.
git remote add your-new-repo
- 그런 다음 밀어 넣으십시오.
얕은 초기 커밋 이후에 추가 한 새로운 커밋으로 리포지토리를 그대로 유지하려면 다른 옵션은 다음과 같습니다 . 대화식 rebase로 커밋을 수정하십시오 .
첫 번째 (루트) 커밋을 포함하여 대화식 리베이스를 시작하십시오.
git rebase --interactive --root
pick
초기 커밋을로 변경하고edit
파일을 저장하고 닫습니다.깊이가 1보다 큰 리포를 복제 한 경우 해당 커밋에 대해 동일한 작업을 수행해야 할 수 있습니다. 또는
fixup
대화식 리베이스 동안 이들을 모두 실행 하십시오.이 커밋을 다음과 같이 정규적이고 얕은 커밋으로 변환하십시오.
git commit --amend --no-edit
또한 커밋 ID가 변경되고이 초기 커밋의 공동 저자로 추가됩니다.
리베이스를 끝내는 것을 잊지 마십시오
git rebase --continue
'Programing' 카테고리의 다른 글
Eclipse, Android에서 가상 장치를 삭제할 수 없습니다 (0) | 2020.06.19 |
---|---|
Node.js 및 Express를 사용하여 POST 할 때 요청 본문에 액세스하는 방법은 무엇입니까? (0) | 2020.06.18 |
SVN은 폴더 자체가 아닌 폴더의 내용을 체크 아웃합니다. (0) | 2020.06.18 |
css는 의사 : : after 또는 : before content :“” (0) | 2020.06.18 |
C / C ++에서 NULL 포인터 확인 (0) | 2020.06.18 |