2016-02-21 14 views
8

Vì vậy, tôi đang làm việc trên một dự án nhạy cảm với một nhóm và tất cả các nguồn của chúng tôi đều có trên Github. Gần đây tôi đã đẩy một cam kết và sau đó nhận ra có rất nhiều lỗi trong sự thúc đẩy của tôi. Tôi đã sửa tất cả những lỗi đó trên bản sao cục bộ của mình và sắp sửa đẩy lại. Tuy nhiên có cách nào tôi có thể đẩy và ghi đè cam kết cuối cùng của mình không? Lý do của tôi là, tôi không muốn những người khác tra cứu cam kết ban đầu của tôi và những thay đổi mà nó có ...làm thế nào để ghi đè lên cam kết với một cái mới trên git?

Về cơ bản tôi muốn ghi đè lên cam kết cũ với tài khoản mới của tôi .. vì vậy không có thông tin về cam kết cũ vẫn còn cho các thành viên khác trong nhóm xem.

Mọi trợ giúp sẽ được đánh giá cao! Cảm ơn bạn.

LƯU Ý: Chỉ cần nhận thấy rằng câu hỏi này đã được đánh dấu là trùng lặp. Để làm rõ, câu hỏi của tôi là viết đè lên một cam kết đã được đẩy. Câu hỏi của tôi KHÔNG phải là thay đổi một thông báo cam kết không chính xác.

+1

Bạn có thể sửa đổi cam kết của mình ('git commit --amend') hoặc nếu dữ liệu nhạy cảm hơn thì có hướng dẫn tại https://help.github.com/articles/remove-sensitive-data/. – adrianbanks

+1

Điều này đang thay đổi lịch sử. Ngoài ra, vì bạn đã thực hiện một cam kết khác, điều này rất có thể sẽ khó khăn hơn một chút. Để tham khảo trong tương lai, để thay đổi cam kết cuối cùng mà bạn đã thực hiện, bạn có thể sử dụng 'git commit --amend'; điều này cũng sẽ đòi hỏi một lực đẩy. –

+0

@ABMagil Câu hỏi của tôi không liên quan gì đến thông báo cam kết. Đó là về những thay đổi và lịch sử. – sparta93

Trả lời

12

Thông thường, một khi có thứ gì đó trên Github (hoặc repo công khai), không có cách nào để làm cho chắc chắn không ai khác có cam kết xấu.

Nếu bạn chỉ muốn lịch sử mã sạch hơn, cách thực hiện những gì bạn yêu cầu yêu cầu bạn ghi đè lịch sử cả cục bộ lẫn trên dự án từ xa.

Điều bạn muốn là thực hiện git commit --amend để sửa đổi cam kết cũ của bạn nếu bạn chưa tạo cam kết mới với các thay đổi của mình.

Nếu bạn đã tạo một cam kết mới, bạn sẽ muốn sử dụng git rebase -i để chỉnh sửa cam kết của bạn trên đầu trang cũ.

Sau khi bạn đã thực hiện thay đổi cục bộ này và xác minh cam kết của bạn theo cách bạn muốn, bạn sẽ phải git push --force để ghi đè lịch sử trên điều khiển từ xa Github.

Đây là hướng dẫn về cách viết lại lịch sử trong git, nó giải thích cả hai cách tiếp cận được liệt kê trong this answer.

+0

'git push - force', nguy hiểm nhưng yêu nó – Hoto

0

Tôi sẽ không khuyên bạn làm điều này vì GIT không có nghĩa là xóa và/hoặc chỉnh sửa các cam kết. Bạn chỉ có thể hoàn nguyên cam kết trước đó của mình và sau đó cam kết lại mã "hợp lệ".

Hoặc bạn có thể Rebase chi nhánh của mình. Hoặc xem tại đây Answer.

+1

" GIT không phải là để loại bỏ và/hoặc chỉnh sửa cam kết "Tôi muốn nói rằng thực hành phát triển tốt tư vấn cho hành động như vậy, nhưng GIT là" có nghĩa là "trong đó nó có khả năng và có những lý do rất tốt cho việc này; như khi thông tin nhạy cảm được cam kết không nên. – rainabba

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