IT

역사없이 git repo를 복사하십시오.

lottoking 2020. 6. 3. 08:13
반응형

역사없이 git repo를 복사하십시오.


현재 github에 공개하려는 개인 저장소가 있습니다. 그러나 초기 커밋 중 일부에는 공개하고 싶지 않은 정보 (하드 코딩 된 자격 증명 등)가 포함되어 있습니다.

커밋 히스토리의 일부 또는 전부를 포함하지 않고 최신 커밋을 퍼블릭으로 만드는 가장 쉬운 방법은 무엇입니까?


복제 하는 동안 히스토리의 깊이를 제한 할 수 있습니다 .

--depth <depth>
Create a shallow clone with a history truncated to the specified 
number of revisions.

제한된 역사를 원하지만 여전히 일부를 원한다면 이것을 사용하십시오.


다음 명령을 사용하십시오.

git clone --depth <depth> -b <branch> <repo_url>

어디:

  • depth포함하려는 커밋의 양입니다. 즉, 최신 커밋 사용을 원할 경우git clone --depth 1
  • branch복제하려는 원격 지점의 이름입니다. 즉, master분기 사용 에서 마지막 3 개의 커밋을 원할 경우git clone --depth 3 -b master
  • repo_url 당신의 저장소의 URL입니다

.git폴더를 삭제하는 것은 기록을 원하지 않거나 필요로하지 않기 때문에 가장 쉬운 경로 일 것입니다 (Stephan이 말했듯이).

따라서 최근 커밋에서 새 저장소를 만들있습니다. ( 전체 히스토리없이 시드 / 킥 스타트 프로젝트를 복제하는 방법? )

git clone <git_url>

그런 다음 삭제 .git하고 나중에 실행하십시오.

git init

또는 현재 저장소 재사용 하려면 현재 커밋을 Git 저장소에서 유일한 (초기) 커밋으로 만드시겠습니까?

그런 다음 위의 단계를 수행하십시오.

git add .
git commit -m "Initial commit"

리포지토리로 미십시오.

git remote add origin <github-uri>
git push -u --force origin master

#!/bin/bash
set -e

# Settings
user=xxx
pass=xxx
dir=xxx
repo_src=xxx
repo_trg=xxx
src_branch=xxx

repo_base_url=https://$user:$pass@bitbucket.org/$user
repo_src_url=$repo_base_url/$repo_src.git
repo_trg_url=$repo_base_url/$repo_trg.git

echo "Clone Source..."
git clone --depth 1 -b $src_branch $repo_src_url $dir

echo "CD"
cd ./$dir

echo "Remove GIT"
rm -rf .git

echo "Init GIT"
git init
git add .
git commit -m "Initial Commit"
git remote add origin $repo_trg_url

echo "Push..."
git push -u origin master

참고 URL : https://stackoverflow.com/questions/29368837/copy-a-git-repo-without-history

반응형