2011-11-08 24 views
12

Khi tôi lần đầu tiên bắt đầu với repo này, tôi đã không sử dụng git trước và biffed các thiết lập bằng cách mistyping email của tôi hoặc một cái gì đó để tất cả các cam kết trong một thời gian được thực hiện bởi người dùng "không xác định". Tôi tìm thấy một câu trả lời ở đây để chuyển đổi tất cả các "không rõ" cam kết vào tên của tôi, nhưng những gì nó thực sự đã làm trùng lặp cam kết và áp dụng tên của tôi. Vì vậy, bây giờ tôi có tất cả những người dùng "không xác định" cam kết phân tán.github: Làm thế nào bạn xóa tất cả các cam kết của một tên người dùng nhất định

Vì vậy, tôi đã tự hỏi về một số lệnh để chạy để xóa tất cả các cam kết của người dùng "không xác định".

Trả lời

13

Bạn sẽ phải sử dụng git filter-branch (trong repo của bạn) và buộc đẩy vào github.

Ví dụ từ thủ công mà những giao dịch gần như hoàn cảnh tương tự, nơi bạn muốn loại bỏ các cam kết từ một người dùng cụ thể:

git filter-branch --commit-filter ' 
    if [ "$GIT_AUTHOR_NAME" = "Darl McBribe" ]; 
    then 
      skip_commit "[email protected]"; 
    else 
      git commit-tree "[email protected]"; 
    fi' HEAD 

Lưu ý rằng điều này sẽ viết lại lịch sử của bạn và nó có thể ảnh hưởng đến những người khác cũng sử dụng repo.Github của bạn tư vấn về cộng tác viên:

Đối phó với cộng tác viên

bạn có thể phải cộng tác viên mà kéo chi nhánh bẩn của bạn và tạo ra nhánh của riêng họ. Sau khi họ tìm nhánh mới của bạn, họ sẽ cần phải sử dụng git rebase trên các chi nhánh của riêng họ để rebase chúng trên đầu trang mới. Cộng tác cũng phải đảm bảo rằng chi nhánh của họ không giới thiệu lại tệp vì điều này sẽ ghi đè tệp .gitignore . Hãy đảm bảo cộng tác của bạn sử dụng tính năng rebase và không hợp nhất, nếu không thì sẽ chỉ giới thiệu lại tệp và toàn bộ lịch sử bị nhiễm độc… và có khả năng gặp phải một số xung đột hợp nhất.

http://help.github.com/remove-sensitive-data/

+0

lớn ... Điều này giải quyết vấn đề của tôi .... Cảm ơn rất nhiều .. –

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