2014-05-19 4 views
0

나는 응용 프로그램을 풀다가 모든 git 커밋 내역을 제거하고 전체 응용 프로그램이 이전과 동일하지만 "커밋 초기 커밋"만으로 작동하도록 다시 밀어 넣고 싶습니다.Git 히스토리 모두 제거 할 수 있습니까?

나는 이런 식으로 일을 생각하고 :이 원하는 결과를 얻을 수있는 가장 좋은 방법입니다 있는지 확실하지 않습니다

git clone https://github.com/user/user-repo.git 
cd user-repo 
git reset --hard tags/v2.0 

rm -rf .git/ 
git init 
git add . 
git commit -m 'first commit' 

git remote add stash ssh://[email protected]:7999/myproject/user-repo.git 
git push --force stash master 

, 긴하지만.

도와주세요!

감사합니다.

+1

왜 프로젝트를 삭제하고 다시 만들지 않습니까? –

답변

-1

당신 수는 .git/ 디렉토리를 삭제하지 않고 :

git rebase -i <sha hash of the very first commit> 

그런 다음 모든 목록은 위에서 아래의 순서로 적용 커밋 것입니다. picksquash으로 변경하면 모든 커밋이 이전 커밋으로 스쿼시되어 1 회만 커밋해야합니다.

+0

감사합니다. Kache! 즉, git rebase -i d9fcfde2b26d9d3b7a6b89a0fe78ee05b0db20cf (초기 커밋)입니다. 그리고 이것은 나의 후자의 커밋 전부를 초기 커밋으로 스쿼시 할 것인가? – user3399101

+0

'Rebase'은 커밋을 다시 적용 할 작업을 시작합니다. 당신이 아무것도하지 않으면 정상적으로 모든 커밋을 다시 덮어 버릴 것이다. 내 대답을 더 명확하게 편집하겠습니다. 어쨌든,이 질문은 이미 다른 곳에서 꽤 분명하게 대답되어있는 것처럼 보입니다. 여러분은 여러분의 선택을보다 완전하고 명확하게 이해하기 위해이 질문을 읽어야합니다. – Kache

0

reset 명령은 Git에게 현재 "위치"를 특정 커밋 (이 경우 첫 번째 커밋)으로 되돌려 놓고, --soft 플래그를 추가하면 모든 파일을 최신 커밋 시점의 상태로 유지하도록 알려줍니다. :

git reset <first commit> --soft 
그런 다음 커밋 이전 (초기) 개정 당신이 만든 모든 변경 사항을 커밋 할 수

(후속 커밋에서 변경 한 내용이 이미 당신을 위해 개최되어야한다) :

git commit --amend -m "Initial commit" 
-1

새로운 고아 Branc를 만들 수 있습니다. 당신이하려고하는 어떤

$ git checkout --orphan new-master 
$ git commit 
$ git checkout master 
$ git reset --hard new-master 
$ git branch -d new-master 
-1

역사를 제거하는 가장 확실한 방법합니다 - .git를 제거하고 완전히 새로운 REPO 힘 푸시를 만들 : 시간 (즉, 부모가없는 하나)와 그에게 마스터 지점을 설정합니다. 그것은 작동해야합니다.

git checkout --orphan temp 
git add -A 
git commit 
git branch -D master 
git branch -m master 
git push -f origin master 

는, 고아 분기 (부모 나)를 작성하고 현재 작업 복사본 파일을 추가하고 커밋 :

당신은이 (보수적 인) 접근을 할 수 있습니다. 마스터 분기를 삭제하고 고아 분기의 이름을 마스터로 바꿉니다. 새 마스터를 강제로 밀어 넣으십시오.

관련 문제