UFO ET IT

전체 내역없이 시드 / 킥 스타트 프로젝트를 복제하는 방법은 무엇입니까?

ufoet 2021. 1. 8. 20:56
반응형

전체 내역없이 시드 / 킥 스타트 프로젝트를 복제하는 방법은 무엇입니까?


--depth=1매개 변수 를 사용 하면 프로젝트를 새 저장소로 푸시 할 수 없습니다 .

자세한 내용은 다음을 참조하십시오. Git 원격 URL 변경 후 "원격 거부 됨"(얕은 업데이트는 허용되지 않음)


당신은 할 수 있습니다

git clone <git_url>

폴더에서 .git 저장소를 삭제하십시오. 모든 기록이 삭제됩니다.

당신은 할 수 있습니다

git init 

완전히 새로운 git 프로젝트가 생성됩니다.

이것은 최선의 방법이 아닐 수도 있습니다. 그러나 이것은 작동합니다. 도움이 되었기를 바랍니다.


역사의 완전한 손실이 문제가되지 않는다고 생각하는 한 Ajay가 제안한 접근 방식은 완벽하게 유효합니다. 그러나 얕은 클론의 기록을 유지하려면 다른 제안이 있습니다.


얕은 클론 은 "첫 번째"커밋의 부모를 위조하기 위해 소위 이식 지점사용하여 전체 기록을 가진 척합니다 . 전체 기록을 사용할 수 있다고 가정하면 질문을 다시 표현할 수 있습니다. 특정 개정 전에 기록을 어떻게 버릴 수 있습니까?

이것은 우리가 접목 지점과 git filter-branch(연결된 질문에서 제안 된대로) 의 조합을 사용할 수 있음을 의미 합니다. 그러나 이렇게하면 전체 기록이 다시 작성되어 처음에 복제 한 원격지와 새 기록이 호환되지 않는다는 점에 유의해야합니다. 이로 인해 저장소에서 이전 리모컨을 제거해야합니다.

git remote remove <old-remote-name>

이제 재 작성을 시작할 수 있습니다. 현재 마스터 커밋을 저장소의 새 루트 로 만들고 싶다고 가정 해 보겠습니다 .

git rev-parse --verify master >> .git/info/grafts
git filter-branch -- --all

이렇게하면 현재 마스터 커밋을 새 루트로 사용하여 저장소의 전체 기록을 다시 작성합니다. 에서 "백업"참조를 제거하여 다시 쓰기를 완료 할 수 있습니다 refs/original. 또한 이제 .git/shallow파일을 삭제할 수 있습니다 .

이 작업을 마치면 이제 접목되지 않은 기록을 새 리모컨 으로 푸시 할 수 있습니다 .


다음과 같이 시도하십시오.

mkdir -p /tmp/git-copy
cd /tmp/git-copy

# create another copy of your repository
git clone file:///path/to/cloned/repo

cd repo
git rebase -i (first-commit)

# in vim:
# :2,$s/^pick/squash
# :w

# Now wait, it will take a while...

git push --mirror git@github.com:username/new-repo.git

방금 이 저장소 에서 시도했습니다 . 작동하는 것 같습니다-기록이 없으며 모든 하위 모듈이 손상되지 않았습니다.

참조 URL : https://stackoverflow.com/questions/29748197/how-to-clone-seed-kick-start-project-without-the-whole-history

반응형