2010-06-10 26 views
34

Một thành viên trong nhóm vô tình đẩy nửa số vòng quay không mong muốn vào repo từ xa tối qua khi họ đang vội vàng. Vâng ... oops.Tôi có thể hoàn tác việc đẩy git cuối cùng không?

Không ai đã kéo hoặc cam kết kể từ đó.

Lý tưởng nhất là tôi muốn 'hoàn tác' những gì đã xảy ra.

Tôi đã nhìn filter-branch và đã nghĩ đến việc cố gắng một cái gì đó giống như

git filter-branch --tree-filter 'rm -f *.zip' HEAD 

nhưng đó sẽ là địa phương, và tôi không thể tìm ra cách để làm điều đó trực tiếp trên repo từ xa.

Có cách nào đơn giản hơn để hoàn tác những gì đã xảy ra không? Nếu cô ấy sửa đổi cam kết cuối cùng của mình và đẩy một lần nữa thì sẽ hủy bỏ việc đẩy - tức là thực sự xóa những tệp đó khỏi lịch sử?

Rõ ràng nếu cô ấy xóa chúng, cam kết và đẩy lại thì vẫn để lại nội dung trong repo, điều này không tốt.

+0

Có những câu hỏi tương tự có thể giúp họ: http://stackoverflow.com/questions/1270514/undoing-a-git-push – Don

Trả lời

53

Cảm ơn Don, tôi đã thấy điều đó nhưng bằng cách nào đó đã không nhận ra nó đã khắc phục được sự cố của tôi, bởi vì tôi chỉ có một nhánh.

tôi đã làm:

git push -f origin 5910117a8fc2c71334251465b54d6d9daeb28d1c:master 

Và đó là tất cả trở lại như thế nào nó được.

+0

hoạt động tốt. bạn có thể muốn dành một chút thời gian để suy nghĩ về việc cho phép bất cứ ai có quyền truy cập vào repo có thể làm điều đó là tốt hay không :) đi tới repo từ xa trực tiếp và sử dụng git reset để di chuyển nhánh chính của nó. bỏ qua bất kỳ kiểm tra quyền nào được thực hiện trong móc. – araqnid

+7

Bạn có thể muốn thêm: git reset --hard 5910117a8fc2c71334251465b54d6d9daeb28d1c Điều đó sẽ đảm bảo bản sao cục bộ của bạn cũng được hoàn nguyên về bản sửa đổi cụ thể đó (nếu không, có vẻ như repo cục bộ của bạn khác với điều khiển từ xa). –

+12

làm rõ: băm sha phải là băm của cam kết GOOD cuối cùng - không phải là cam kết xấu của bạn đẩy – philfreo

5

Tôi nghĩ

git reset --hard HEAD^ 
git push -f 

nên để lừa: Nó reset kiểm tra địa phương của mình vào trước cam kết (giả sử người cuối cùng là một trong những bạn muốn thả) và lực đẩy nó vào kho lưu trữ từ xa.

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