2013-02-19 39 views
15

Tôi đang cố tìm nạp repo từ Github, hoàn nguyên thẻ trong quá khứ, đẩy nó vào một điều khiển từ xa khác bằng cách xóa tất cả lịch sử. Tôi có thể làm mọi thứ với bên dưới ngoại trừ xóa tất cả nhật ký cam kết. Những gì tôi đang mất tích?Xóa tất cả Lịch sử Cam kết Git

git clone https://github.com/user/user-repo.git 
cd user-repo 
git reset --hard tags/v2.0 
git remote add stash ssh://[email protected]:7999/myproject/user-repo.git 
git push --force stash master 

Trả lời

33

Tôi nghĩ những gì bạn muốn là một repo như một cái mới, vì vậy việc xóa thư mục .git/ và nhập lại nó sẽ đơn giản hơn.

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 
+0

Cảm ơn, đó là những gì tôi đã kết thúc trước khi đọc bài đăng của bạn. Tôi đã làm điều tương tự :) – noway

+0

Điều này đã giúp tôi rất nhiều! Cảm ơn – breezy

+0

Đây là những gì tôi muốn. – Shaowu

3

Bạn có thể sử dụng git merge --squash để nén tất cả các cam kết thành một và sau đó đẩy nó.

1

Về cơ bản bạn đang nói về việc đưa tất cả các cam kết vào một cam kết hoặc bạn có muốn giữ lại tất cả các cam kết nhưng cắt bớt thông báo cam kết thực tế không?

Để dẹp cam kết thành một (và cắt xén thông điệp cam kết cuối cùng, nếu bạn muốn), bạn có thể sử dụng một rebase tương tác:

git rebase -i <whatever> 

Để cắt ngắn thực tế bài viết cam kết nhưng giữ lại tất cả các cam kết, sử dụng tùy chọn --msg-filter để git filter-branch.

Các vấn đề liên quan