여기에 질문 한 것과 같은 질문이 있습니다 : 루트 디렉토리의 새로운 자식 저장소는 하위 디렉토리에 존재하는 저장소를 가정합니다.
나는이 대답을 여기에 따랐다 : 루트 디렉토리의 새로운 자식 저장소는 하위 디렉토리에 존재하는 저장소를 가정합니다.
이제 gitk --all
두 개의 기록을 보여줍니다. 하나는 현재에서 끝나고 master
다른 하나는라는 이름 original/refs/heads/master
입니다.
이 두 번째 역사가 무엇인지 또는 저장소에서 제거하는 방법을 모르겠습니다. 내 저장소에 두 개의 이력이 필요하지 않습니다.
어떻게 제거합니까?
자신을 재현하려면 :
mkdir -p project-root/path/to/module
cd project-root/path/to/module
mkdir dir1 dir2 dir3
for dir in * ; do touch $dir/source-file-$dir.py ; done
git init
git add .
git commit -m 'Initial commit'
이제 원래 포스터의 문제가 있습니다. 위의 답변을 사용하여 git repo의 루트를 project-root로 이동합시다.
git filter-branch --tree-filter 'mkdir -p path/to/module ; git mv dir1 dir2 dir3 path/to/module' HEAD
rm -rf path
cd ../../../ # Now PWD is project-root
mv path/to/module/.git .
git reset --hard
이제 내 현재 문제를 확인하십시오.
gitk --all &
git show-ref
refs/original/heads/master
모든 관련 기록을 제거하려면 어떻게해야 합니까?