2011-08-15 27 views
66

Tôi đang cố gắng chọn một cam kết từ chủ và đưa nó vào nhánh sản xuất hiện tại. Tuy nhiên, khi tôi thực hiện git cherry-pick <SHA-hash>, tôi chỉ nhận được tin nhắn này:git cherry-pick không hoạt động

# On branch prod_20110801 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# site/test-result/ 
nothing added to commit but untracked files present (use "git add" to track) 
The previous cherry-pick is now empty, possibly due to conflict resolution. 
If you wish to commit it anyway, use: 

    git commit --allow-empty 

Otherwise, please use 'git reset' 

Lưu ý: Tôi đã thử làm một thiết lập lại và một TRỤ --hard reset ^, và dường như không ai để thay đổi bất cứ điều gì.

Tôi nhầm lẫn là tại sao điều này không hiệu quả đối với tôi.

Bất kỳ thông tin chi tiết, lời khuyên hoặc ý tưởng nào về cách giải quyết vấn đề này sẽ hữu ích ~!

+0

Điều này đã xảy ra với tôi khi tôi vô tình cố gắng chọn lựa cam kết sai. Xảy ra đôi khi khi sử dụng gitk. – cst1992

Trả lời

89

Git đang giải quyết lựa chọn anh đào như một no-op - tất cả các thay đổi được giới thiệu bởi cam kết đó đã được giới thiệu bởi một số cam kết trên nhánh hiện tại của bạn. (Hoặc đó là những gì Git nghĩ, anyway.) Xác minh rằng cam kết bạn đang chọn anh đào chưa được sáp nhập bằng cách nào đó, như là một hợp nhất thích hợp, rebase/cherry-pick, hoặc miếng vá từng phần. (Sử dụng git show <commit-id> để xem sự khác biệt.)

+14

Cảm ơn lời khuyên của bạn, hóa ra là lựa chọn anh đào đã diễn ra và tất cả những gì tôi cần làm là đẩy nó vào github. –

+0

Phải, tôi đã không nhận ra rằng nó đang kiểm tra nội dung của các tệp được cung cấp cho thẻ cam kết. Tôi đã đi tìm commit-id trong nhật ký và không thể tìm thấy nó. hóa ra nó đã được sáp nhập vào. – mparaz

7

Trong trường hợp của tôi, điều này đã khiến tôi cảm thấy rất rõ ràng rằng cam kết cụ thể mà tôi muốn chọn lựa là không phải là được hợp nhất vào nhánh hiện tại của tôi.

Hóa ra ai đó đã có đã anh đào đã chọn cam kết một tuần trước đó. Các thay đổi , nhưng không phải là SHA cụ thể, đã nằm trong nhánh hiện tại của tôi và tôi đã không nhận thấy chúng.

Kiểm tra (các) tệp mà bạn đang cố gắng chọn anh đào. Nếu họ đã có những thay đổi, một phiên bản của cam kết đã được anh đào chọn hoặc thêm một cách khác. Do đó, không cần phải anh đào chọn nó một lần nữa.

+0

Tôi khá chắc chắn rằng cam kết cụ thể là * không bao giờ * trong chi nhánh của bạn khi nó được đưa vào bởi một lựa chọn anh đào, bởi vì lựa chọn anh đào sẽ là một băm mới, phải không? Hay tôi hiểu lầm? – msouth

+0

@msouth Những gì ban đầu tôi lấy đi từ các câu trả lời khác là "cam kết đã được sáp nhập", nhưng tôi có thể thấy rằng nó là * không * trong chi nhánh của tôi. Bạn nói đúng về việc chọn cherry luôn là một SHA mới. – pkamb

+0

Vâng, tôi đã nghĩ "cam kết cụ thể, như được xác định bởi băm", khi tôi gõ vào đó. Ngôn ngữ của tôi không chính xác. Tôi thường nhìn lại thông qua đầu ra của 'git log --graph --pretty --decorate --oneline' để xem liệu một SHA đã cho có thuộc nhánh của tôi hay không.Xem câu trả lời của tôi dưới đây về cách bạn cũng có thể bị lẫn lộn dựa trên suy nghĩ thông điệp cam kết là dấu hiệu của sự thay đổi - có một tình huống mà nó không phải là, và đó là những gì đã dẫn tôi đến câu hỏi này ban đầu. Bộ não của một người có khuynh hướng tạo ra những lối tắt đó và đôi khi họ có thể quay trở lại để cắn bạn. – msouth

1

Cũng lưu ý rằng việc thêm tệp trống (ví dụ: .gitkeep) vào cây được coi là lựa chọn anh đào làm cam kết trống.

+0

Trong trường hợp của tôi, tôi đã có một cam kết hoàn nguyên (đó là hoàn nguyên một cam kết trống) trước khi thử cherry-pick của tôi, vì vậy tôi đoán bất cứ điều gì rỗng-ish có thể sẽ gây ra thông điệp này xuất hiện. – lidkxx

0

Vì vậy, đây là Yet Another Tình hình Confusing nơi này có thể phát sinh: Tôi có những điều sau đây:

git log screenshot

Tôi đã cố gắng để anh đào chọn 9a7b12e đó là dường như không có gì - nó thậm chí còn cố gắng nói với tôi trên dòng đó trong đầu ra git log mà 4497428 là thứ tôi thực sự muốn. (Những gì tôi đã làm chỉ là tìm kiếm thông điệp cam kết và nắm lấy băm đầu tiên tôi thấy có nó). Dù sao, chỉ muốn cho mọi người biết rằng có một cách khác mà bạn có thể bị lừa vào việc thử anh đào chọn một cái không.

+0

Không phải là rất hữu ích cho bạn để downvote mà không có lời giải thích - đây là sự tái tạo chính xác của một vấn đề tôi đã có mà dẫn đến tôi tìm kiếm câu hỏi này trên tìm kiếm của tôi. Nếu bạn có một đề nghị để cải thiện điều này, xin vui lòng cho tôi biết trong ý kiến ​​thay vì chỉ downvoting. – msouth

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