Có khả năng hoàn nguyên tệp đã cam kết trong Git không? Tôi đã đẩy một cam kết lên GitHub và sau đó tôi nhận ra rằng có một tệp mà tôi không muốn được đẩy (tôi chưa hoàn thành các thay đổi).
Có khả năng hoàn nguyên tệp đã cam kết trong Git không? Tôi đã đẩy một cam kết lên GitHub và sau đó tôi nhận ra rằng có một tệp mà tôi không muốn được đẩy (tôi chưa hoàn thành các thay đổi).
Câu trả lời:
cập nhật: thêm phương pháp an toàn hơn
kiểm tra trạng thái trước đó (không thay đổi) của tệp của bạn; chú ý dấu gạch ngang đôi
git checkout HEAD^ -- /path/to/file
cam kết nó:
git commit -am "revert changes on this file, not finished with it yet"
đẩy nó, không cần lực:
git push
quay trở lại công việc chưa hoàn thành của bạn, làm lại (mũi tên lên 3 lần):
git checkout HEAD^ -- /path/to/file
Để sửa đổi cam kết cuối cùng của HEAD kho lưu trữ, làm xáo trộn công việc vô tình bị đẩy của bạn, trong khi có khả năng xảy ra xung đột với đồng nghiệp của bạn, người có thể đã kéo nó rồi và người sẽ tóc bạc và mất nhiều thời gian cố gắng hòa giải người đứng đầu chi nhánh địa phương của mình với trung tâm:
Để xóa thay đổi tệp khỏi lần cam kết cuối cùng:
để hoàn nguyên tệp về trạng thái trước lần cam kết cuối cùng, hãy thực hiện:
git checkout HEAD^ /path/to/file
để cập nhật cam kết cuối cùng với tệp đã hoàn nguyên, hãy thực hiện:
git commit --amend
để đẩy cam kết cập nhật vào repo, hãy thực hiện:
git push -f
Thực sự, hãy xem xét sử dụng phương pháp ưa thích đã đề cập trước đây.
git checkout HEAD~2 /path/to/file
? Chỉnh sửa: Có vẻ như những gì tôi muốn trong trường hợp của mình chỉ đơn giản làgit rm /path/to/file
Nếu bạn muốn xóa tệp khỏi repo từ xa, trước tiên hãy xóa tệp khỏi dự án của bạn bằng tùy chọn --cache và sau đó đẩy tệp:
git rm --cache /path/to/file
git commit -am "Remove file"
git push
(Điều này hoạt động ngay cả khi tệp đã được thêm vào repo từ xa một số cam kết trước đó) Hãy nhớ thêm vào .gitignore các phần mở rộng tệp mà bạn không muốn đẩy.
Bạn chỉ có thể hoàn nguyên một tệp về một bản sửa đổi được chỉ định.
Đầu tiên, bạn có thể kiểm tra những cam kết nào mà tệp đã được thay đổi.
git log path/to/file.txt
Sau đó, bạn có thể kiểm tra tệp với số sửa đổi.
git checkout 3cdc61015724f9965575ba954c8cd4232c8b42e4 /path/to/file.txt
Sau đó, bạn có thể cam kết và đẩy lại.
Đặt lại tệp ở trạng thái chính xác, cam kết và đẩy lại.
Nếu bạn chắc chắn rằng không ai khác đã tìm nạp các thay đổi của bạn, bạn có thể sử dụng --amend
khi cam kết, để sửa đổi cam kết trước đó của bạn (tức là viết lại lịch sử) và sau đó đẩy. Tuy nhiên, tôi nghĩ bạn sẽ phải sử dụng -f
tùy chọn khi đẩy, để ép.
Nhận mã băm của lần cam kết cuối cùng.
git log
git revert <hash_code_from_git_log>
git push
kiểm tra trong GHR. bạn có thể nhận được những gì bạn cần, hy vọng bạn điều này hữu ích