2012-03-17 61 views

Trả lời

3
git reset --hard HEAD^ 

Lệnh này đặt lại nhánh của bạn thành cam kết trước đó, đó là cam kết trước cam kết hợp nhất, đó là cam kết bạn muốn hoàn tác. Công việc của bạn sẽ bị bỏ hoang.

Hãy nhớ rằng mọi thứ đã được cam kết vẫn ở đó dưới dạng đối tượng lỏng lẻo và bạn luôn có thể sử dụng git reflog để hoàn nguyên về bất kỳ phiên bản HEAD nào đã chỉ ra trước đây. Đây là lý do tại sao nó rất quan trọng để cam kết thường xuyên với git, bạn có thể hoàn tác tất cả những thay đổi bạn đã làm một cách dễ dàng.

+1

Tất cả các câu trả lời này bằng cách sử dụng 'git reset --hard _some commit_' làm cho kho của bạn trông ổn, nhưng để tất cả cam kết từ kho lưu trữ từ xa sai trong kho lưu trữ cục bộ của bạn, vì vậy không có kho nào là hoàn tác "hoàn tác". git gc sẽ không xóa các commit sai vì chúng nằm trong reflog của bạn (vì gần đây bạn đã nhắc đến chúng). Tôi nghĩ rằng họ cuối cùng sẽ hết hạn, nhưng nếu bạn muốn giết họ ngay lập tức nó đòi hỏi phải phẫu thuật sâu hơn. – skierpage

+0

@skierpage Đúng. Các cam kết vẫn còn đó, lơ lửng, cho đến khi bạn làm sạch chúng. Có nhiều cách khác nhau để làm điều này. Cách dễ nhất là sao chép lại kho lưu trữ (giả sử bạn có thể vứt bỏ kho lưu trữ mà bạn đang sử dụng ngay bây giờ) – ralphtheninja

3

Một cách để làm điều này

$ git reset --hard latest-good-commit-hash 

Sử dụng git log --all (hoặc đồ họa hơn, sử dụng gitk --all) để xem các cam kết lịch sử

3

Hãy thử git reflog. Reflog cho phép bạn hoàn tác hầu như mọi thao tác. Something như thế này

git reset --hard [email protected]{1} 

Tuy nhiên, nếu bạn đã có bản sao làm việc dơ bẩn, nó sẽ xóa tất cả những thay đổi của bạn, vì vậy hãy cẩn thận.

+0

Cảm ơn! Tôi đã thêm và cam kết nhưng không được đẩy. những gì đã được thêm vào và cam kết sẽ không được vượt qua bởi điều này bây giờ phải không? – Barka

+0

Đó là chính xác, nếu bạn đã thêm và cam kết, những gì bạn đã thêm và cam kết sẽ vẫn ở đó sau này. –

+0

@ user277498, xem thêm đầu ra của 'git reflog' trước khi bạn thực hiện' reset'. Nó chứa thông tin về hậu tố '@ {1}' thực sự có nghĩa là gì, không cần phải có ma thuật :) –

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