git branch -d đưa ra cảnh báo


91

Chỉ muốn hiểu rõ hơn về thông báo cảnh báo sau khi tôi xóa một chi nhánh cục bộ

cảnh báo: xóa nhánh 'old_branch'đã được hợp nhất 'refs/remotes/origin/old_branch'nhưng chưa được hợp nhất vào HEAD.


28
nếu bạn hợp nhất --squash old_branch của mình, bạn sẽ luôn nhận được cảnh báo này khi xóa cục bộ. Khi cán nát chỉ số của bạn được thiết lập lại do đó không phù hợp với old_branch Head
Antoine Wils

Trong khi các câu trả lời khác là đúng, nhận xét của Antoine ít nhất là lý do trong trường hợp của tôi.
Squrppi

Câu trả lời:


66

Đây chỉ là cảnh báo cho bạn biết rằng bạn có các thay đổi được đẩy lên nhánh origin, nhưng chúng không được hợp nhất vào master, vì vậy bạn chỉ xóa nó cục bộ.

Nó đang cảnh báo bạn rằng bạn không còn bản sao cục bộ của nhánh đó nữa, nhưng nó tồn tại trong origin

Nếu bạn cũng muốn xóa nhánh từ xa, hãy sử dụng git push --delete origin old_branch


9
Vâng, masterkhông liên quan đến việc này. Bạn có nghĩa là chi nhánh hiện tại, đúng hơn. ;)
Fernando Espinosa,

1
Tôi nhận được cảnh báo này ngay cả khi tôi thực hiện một git branch -d branch_namehành động được cho là chỉ xóa nhánh cục bộ. Tại sao cần cảnh báo trong trường hợp này?
Akshay Damle

2
Nhưng origin / old_branch được hợp nhất thành origin / master. Sau đó tôi đã thực hiện git pull origin trên master branch. Vẫn lỗi như vậy. Đây không phải là lỗi trong GH?
vikramvi

36

Giả sử bạn hiện đã thanh toán master, điều đó có nghĩa là những thay đổi được thực hiện trong old_branchkhông có trong master. Tuy nhiên, họ mặt old_branchtrên origin.


4
Vâng. Đây là câu trả lời chính xác! "nhưng chưa được hợp nhất thành HEAD", HEADở đây tham chiếu đến HEAD của chi nhánh chính cục bộ.
Devy

3
Nhưng origin / old_branch được hợp nhất thành origin / master. Sau đó tôi đã thực hiện git pull origin trên master branch. Vẫn lỗi như vậy. Đây không phải là lỗi trong GH?
vikramvi

1
@vikramvi Giả sử bạn đã thanh toán mastercục bộ, điều này vẫn có thể xảy ra nếu SHA của bất kỳ cam kết nào đã thay đổi; tức là bạn rebased origin/old_branchlên origin/master. Ngay cả khi đó là một quá trình tua đi nhanh, điều này sẽ tạo ra một SHA mới cho mỗi cam kết mới từ đó origin/old_branch, khiến git xem SHA ban đầu trong cục bộ của bạn old_branchlà không hợp nhất sau khi kéo các thay đổi vào masternhánh cục bộ của bạn . Bạn có thể xem câu trả lời nàycâu trả lời này cho lý do tại sao điều này xảy ra.

8

Điều này có nghĩa là chi nhánh cục bộ của bạn old_branchđược cập nhật với chi nhánh old_branchtừ xa trên điều khiển từ xa originnhưng nó không được hợp nhất với chi nhánhmaster được coi là chi nhánh chính trong repo.

Nó chỉ là một biện pháp phòng ngừa từ git. Nó cung cấp cho bạn một gợi ý: có thể bạn đã làm công việc của mình trong nhánh chủ đề và quên hợp nhất nó với nhánh chính?


cập nhật

Git cảnh báo bạn khỏi bị mất các thay đổi của mình. Ví dụ: nếu bạn không có old_branchgit của bạn trên master git thì không cho phép bạn xóa cả nhánh chưa được hợp nhất với master (nó cho phép, nhưng với key -Dforce-deletetùy chọn).


7
Không nhất thiết master, nhưng hiện tại HEAD.
Frozen Flame

Vì vậy, D là khi bạn chưa chia sẻ chi nhánh đang bị xóa (thực sự là cam kết) với bất kỳ chi nhánh nào từ xa. Mặc dù cảnh báo là để thông báo cho bạn biết rằng bạn đã chia sẻ nhánh (cam kết) với điều khiển từ xa nhưng nó chỉ không được hợp nhất vào HEAD. HEAD là HEAD, remote / refs / HEAD không giống nhau. Nhưng vui lòng sửa cho tôi nếu tôi sai về sự khác biệt giữa HEAD từ xa và HEAD địa phương.
Eric

7

Để thêm vào các câu trả lời khác, điều này cũng có thể có nghĩa là thay đổi có thể được hợp nhất thành bản chính, chỉ là bản sao chính cục bộ của bạn chưa phản ánh nó. Dù bằng cách nào thì điều này cũng chỉ thông báo cho bạn rằng bản sao cục bộ của bản chính của bạn không có những thay đổi mà bạn đã đẩy về nguồn gốc. Đã hợp nhất / Chưa hợp nhất ... có thể, có thể không

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.