Tôi đã đẩy một cam kết vào một repo nơi tôi vô tình thêm tệp. Không ai khác đã sáp nhập từ repo từ xa để tôi có thể viết lại lịch sử. Nhưng khi tôi loại bỏ tập tin (unstage, không loại bỏ từ kiểm soát nguồn, hoặc đĩa) từ cam kết địa phương, tôi không thể đẩy thay đổi. git push lãm Everything up-to-dateXóa tệp khỏi cam kết đã sửa đổi
9
A
Trả lời
3
Trong khi tôi đã làm một cái gì đó tương tự như những gì Colin và ydroneaud đã gợi ý,
Câu trả lời là sử dụng
git push +sa1:sa1
trong đó sa1 là chi nhánh của tôi. Lực này đẩy thậm chí 'không có gì'.
4
Hãy thử:
git rm --cached <yourfile>
git commit --amend
git push -f
5
Nếu bạn cần phải viết lại đầy đủ cam kết, cố gắng sử dụng
git reset HEAD^
git add <files to be part of the commit>
# or git add -pu
git commit -C <previous commit number>
Trước khi làm điều này, bạn sẽ cần phải giữ số cam kết cuối cùng để có thể sử dụng lại thông điệp/ngày/tác giả cam kết.
+0
Tôi đã làm một cái gì đó tương tự. Vấn đề là tôi không thể đẩy những thay đổi đó vào repo từ xa. – sa1
9
Ở đây bạn đi:
git checkout HEAD~ -- path/to/your/file
git add path/to/your/file
git commit --amend -C HEAD
git diff -p HEAD~ -- path/to/your/file | git apply -R
git commit --amend -C HEAD
git reset HEAD~ -- path/to/your/file
git commit --amend -C HEAD
Các vấn đề liên quan
- 1. Git: Cách xóa tệp khỏi cam kết lịch sử?
- 2. Bỏ qua các tệp đã sửa đổi (nhưng không được cam kết) trong git?
- 3. Git: đẩy các cam kết đã sửa đổi
- 4. Làm thế nào để bạn thấy cam kết nào đã xóa một tệp khỏi repo?
- 5. Git hook, sửa đổi các tệp cam kết
- 6. Làm cách nào để chỉ cam kết các tệp đã sửa đổi (và không phải mới hoặc đã xoá)?
- 7. Cách xóa tệp đã bị xóa khỏi .git?
- 8. SVN: Làm thế nào để bỏ qua một tệp đã sửa đổi trên cam kết?
- 9. Cam kết tất cả các tệp đã sửa đổi cho Github trong Netbeans
- 10. Làm cách nào để tìm thấy cam kết git gần đây nhất đã sửa đổi tệp?
- 11. Làm thế nào để xóa các tệp khỏi SVN đã bị xóa khỏi FS?
- 12. SVN: Bỏ qua một tệp đã cam kết
- 13. Xóa 4 cam kết khỏi lịch sử git của tôi
- 14. Git thêm tất cả các tệp đã sửa đổi, xóa và không được theo dõi?
- 15. Xóa bản sửa đổi từ TortoiseSVN
- 16. Git: Không bao giờ cam kết các tệp đã thay đổi (nhưng vẫn giữ nguyên bản sửa đổi.)
- 17. Với git, tạm thời loại trừ tệp được theo dõi đã thay đổi khỏi cam kết trong dòng lệnh
- 18. cách để cho biết subclipse bỏ qua tập tin đã sửa đổi trên cam kết
- 19. git xóa tất cả các tệp đã xóa khỏi toàn bộ lịch sử
- 20. Xóa các tệp đã xóa khỏi lịch sử git
- 21. Git pull đã xóa các thay đổi không được cam kết
- 22. xung đột git - tệp bị xóa trong HEAD và sửa đổi trong bản sửa đổi
- 23. Xóa tệp khỏi SubVersion/SmartSVN
- 24. Làm cách nào để chỉnh sửa các cam kết git trước đây để xóa mật khẩu của tôi khỏi nhật ký cam kết?
- 25. Liệt kệ file bị tất cả đã thay đổi với tình trạng thay đổi giữa Git cam kết (bổ sung, sửa đổi, xóa)
- 26. Cách sửa đổi git add để xử lý các tệp đã xóa?
- 27. Sửa đổi một cam kết đó không phải là trước đó cam kết
- 28. Tại sao chạy `git pull` xóa các thay đổi đã cam kết của tôi?
- 29. Git liệt kê cùng một tệp đã sửa đổi và không được dàn dựng để cam kết?
- 30. Cách tìm số lượng tệp đã thay đổi từ một cam kết này sang cam kết khác trong git
Tôi không muốn xóa tệp khỏi theo dõi, chỉ từ cam kết. – sa1
@ sa1 không có khái niệm theo dõi trong git, tệp của bạn có hoặc không nằm trong cam kết cuối cùng của bạn, đó là tất cả. Các tùy chọn khác là chỉ để lại các tập tin đó nhưng không có nội dung hoặc một phần loại bỏ. Git chỉ là một "trình theo dõi nội dung ngu ngốc" được tạo bởi "anh chàng hệ thống tập tin". ;) – KurzedMetal
@KurzedMetal Có một khái niệm về các tệp được theo dõi. Những gì bạn làm ở đây là xóa tệp khỏi các tệp được theo dõi, những gì anh ta muốn làm là xóa các thay đổi được thực hiện trên một tệp trong một cam kết. –