새 저장소에 고아 분기를 만들 수 있습니다. (git checkout --orphan
), 더미 커밋을 하나 만듭니다.
Z
(아직 새 리포에 있음)에서 새 지점을 만듭니다.
이렇게하면 이전에 repo가 로컬로 복제 된 것으로 가정합니다.
그리고 로컬에서도 새 저장소를 만들었습니다.
cd c:\a\path
git init create newrepo
cd newrepo.
첫째, 기존의 repo가 B에서 체크 아웃되어 있는지 확인합니다 (즉,이 지점 이전에 커밋 나타내는 SHA1)
cd C:\path\to\old\repo
git checkout B
그런 다음 새 빈의 repo에 콘텐츠를 가져
cd C:\a\path\newrepo
git --work-tree=C:\path\to\old\repo add .
git commit -m "Import old repo as Z"
새 저장소에서 이전 저장소를 가져 와서 새 저장소에서 커밋을 리베이스 할 수 있습니다.
cd C:\a\path\newrepo
git remote add oldrepo C:\path\to\old\repo
git fetch oldrepo
git checkout -b newbranch
git rebase --onto newbranch C~ oldrepo/newbranch
새 repo에서 원하는 커밋 만 재생성합니다.
하지만 rebase는 문제가 될 수 있으며 많은 경우 merge conflicts to be resolved manually입니다. in this example를 볼 때 귀하의 경우에는
, 당신은 귀하의 경우 git graft points에, 그 전체와 git replace
을 피하거나 할 수있다.
는 그 다음 git fetch oldrepo
단계까지 과거의 지침을 따르십시오 :
이
git fetch oldrepo
git checkout -b newbranch oldrepo/newbranch
echo SHA1(C) SHA1(Z) > .git/info/grafts
(커밋 xxx
의 SHA1에 의해 SHA1(xxx)
를 교체합니다.Z
은 새가 C
이 처음
부모가 여기에 필요한
C
(NO 병합/REBASE)의 커밋으로
Z
를 선언 할 것이다) 이전의 repo에
newbranch
의 커밋되고, 새로운 REPO에서 수행 커밋된다.
은 영구적으로,
git filter-branch
를 사용하도록하려면
git filter-branch --tag-name-filter cat -- newbranch
rm .git/info/grafts
그런 다음 밀어 수있는 새로운으로 업데이트 지점입니다.
git remote add origin /url/of/new/remote/repo
git push -u origin master
git push -u origin newbranch
이 새로운 저장소에 대해 자세히 설명해 주실 수 있습니까? 처음부터 새로 만들거나 현재의 레포와 어떤 관련이 있습니까? 짜증이 여기 일할 수도 있습니다. –
나는 내 자신의 지점을 만든 큰 repo 있습니다. 이제 다른 사람들에게 내가 한 일을 보여주고 싶습니다. 나는 그들이 다른 것을보기를 원하지 않는다. 그래서 내가 비트 버킷에 대한 자신의 레포를 만들고, 내 지부 (정확하게 내가 한 일)를 밀어서 미립자가 보는 것을 허락하고 싶습니다. – vladimir
@vladimir 새 repo를 재설정하고 다시 실행할 수있는 경우 rebase (많은 병합 충돌이 있음) 대안을 제안하는 답변을 편집했습니다. 그 대안은 훨씬 빠르고 쉽습니다. – VonC