2012-09-19 26 views
15

Tôi cần hợp nhất hai chi nhánh - second vào first và sau đó thoát khỏi second. Dưới đây là những gì tôi đã làm:Tại sao git không cho phép tôi xóa một nhánh an toàn?

  • git clone d dự án để có được một bản sao tươi
  • git checkout --track origin/second, thực hiện một số thay đổi, và cam kết
  • git checkout --track origin/first, thực hiện một số thay đổi, và cam kết
  • git merge second (git nói " hợp nhất được thực hiện bởi đệ quy ")
  • git branch -d second

Sau đó git nói:

$ git branch -d second 
warning: not deleting branch 'second' that is not yet merged to 
     'refs/remotes/origin/second', even though it is merged to HEAD. 
error: The branch 'second' is not fully merged. 
If you are sure you want to delete it, run 'git branch -D second'. 

Tại sao điều này lại xảy ra? Tôi chưa bao giờ nhận được thông báo này sau khi hợp nhất trước đây. Việc hợp nhất làm việc tốt, không có xung đột. Làm cách nào để xóa an toàn chi nhánh second?

+0

'git checkout second' theo sau là' git push origin second' khiến git stop phàn nàn, nhưng tôi không hiểu tại sao. –

+1

Một dự đoán hoang dã, nhưng có thể git than phiền rằng bạn đã không đẩy 'giây' xuất phát trước khi xóa nó? Ngoài ra hãy chắc chắn rằng bạn không ở trong »tách rời HEAD« tiểu bang – knittl

+0

@knittl có, bạn có vẻ đúng, nhưng tại sao sẽ git quan tâm cho dù tôi đã đẩy 'thứ hai'? –

Trả lời

32

Dựa trên các thử nghiệm của tôi và nhận xét của @ knittl và @ twalberg, có vẻ như git chỉ muốn tôi đẩy các thay đổi của tôi đến chi nhánh second trước khi xóa.

tôi đã làm:

$ git checkout second 
$ git push origin second 
$ git checkout first 
$ git branch -d second 

mà làm việc mà không cần cảnh báo.

+0

Chẳng phải 'git branch -D second' sẽ giải quyết nó hay là một thực tế nguy hiểm sao? – Bart

+0

@Bart nó phụ thuộc vào những gì bạn có nghĩa là "giải quyết nó". Làm như vậy sẽ không có kết quả tương tự như giải pháp của tôi - trạng thái của điều khiển từ xa 'origin' sẽ khác. –

+0

@Bart chỉ nên được sử dụng khi bạn biết bạn đang làm gì. Git chủ yếu cung cấp các cảnh báo hữu ích, vì vậy tốt hơn hết là không nên ép buộc mọi thứ trên đó. – cst1992

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