2013-05-30 34 views
6

Tôi đang sử dụng cách dòng git quản lý chi nhánh tại repo của tôi, như được mô tả trong: http://nvie.com/posts/a-successful-git-branching-model/git merge với --no-ff và --squash

Do đó, chuỗi các lệnh tôi nên sử dụng sẽ như sau:

git checkout mybranch 
git pull --rebase origin develop 
git checkout develop 
git merge --no-ff mybranch 

Tuy nhiên, có một điều mà tôi muốn làm khác đi, trong một số trường hợp:

tôi muốn giữ gìn tất cả các cam kết của tôi trên chi nhánh tính năng của tôi (mybranch), nhưng có chúng gộp lại với nhau (hoặc đè bẹp) trong với một điểm khác biệt khi hợp nhất thành develop.

Vì vậy, đây là những gì tôi nghĩ là chuỗi các lệnh nên là:

git checkout mybranch 
git pull --rebase origin develop 
git checkout develop 
git merge --no-ff --squash mybranch 

Liệu tôi có thể làm những điều sai trái nếu tôi được kết hợp với --no-ff--squash?

Tôi do dự để thử này ra bắt nguồn từ cách "đè bẹp" và "giữ gìn lịch sử" là yêu cầu trực giao - xem Squashing all of my commits (including merges) into one commit without altering history

lý do của tôi là tôi muốn giữ lịch sử trên một chi nhánh (mybranch) và suqash trên một nhánh khác (develop) -> vì những hành động này được thực hiện trong các nhánh riêng biệt, điều này là OK.

+0

Tại sao bạn không chỉ cần thử nó. Bạn luôn có thể thực hiện một 'reset' cứng nếu nó không hoạt động. Chỉ cần thực hiện một nhánh tạm thời tại vị trí cũ. Đi tiếp. Thử nó. Bạn biết bạn muốn ... –

Trả lời

1

tôi đã cố gắng kết hợp --squash và --no-ff với nhau và nhận được:

fatal: You cannot combine --squash with --no-ff. 

Một git merge về cơ bản là một bí. Sau khi giải quyết xung đột, nó sẽ xuất hiện như một cam kết phát triển. Sự khác biệt của bản sửa đổi hợp nhất là kết quả của giải quyết xung đột. Và có những thay đổi trên mybranch được bảo tồn. Chỉ cần làm "gitk mybranch &" sau khi hợp nhất để xác minh.

Bên cạnh Bóng tối là chính xác. Đừng sợ. Tạo một chi nhánh mới, chơi xung quanh và xem kết quả là gì.

Thiệt hại được thực hiện trong lệnh "git pull --rebase origin development" của bạn.

trả lời (giả sử bạn đã địa phương phát triển chi nhánh dựa trên nguồn gốc/phát triển):

git checkout develop 
git pull 
git merge --no-ff mybranch 
+0

Ai trên thế giới là "Bóng tối"? Ý bạn là "Cupcake"? – masotime

+0

Tôi đoán là ai đó đã thay đổi tên của họ hoặc xóa câu trả lời kể từ bài đăng của tôi. – cforbish

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