Như tiêu đề cho biết, tôi không thực sự rõ ràng về sự khác biệt giữa git merge --squash
và git merge --no-commit
. Theo như tôi hiểu trang trợ giúp cho git merge
, cả hai lệnh sẽ để lại cho tôi trong một cây làm việc được cập nhật, nơi vẫn có thể chỉnh sửa và sau đó thực hiện cam kết cuối cùng (hoặc nhiều lần commit).Sự khác biệt giữa hợp nhất Git --squash và --no-cam
Ai đó có thể làm rõ sự khác biệt của 2 tùy chọn đó? Khi nào tôi sử dụng cái này thay cho cái kia?
Vì vậy, cam kết hợp nhất sẽ hiển thị như thế nào trong lịch sử? Vì tôi có thể chỉnh sửa thông điệp cam kết, làm cách nào tôi thấy rằng đó là một cam kết hợp nhất? – quaylar
@quaylar Một cam kết hợp nhất không thực sự là một cam kết đặc biệt, ngoại trừ việc nó có nhiều cha mẹ. Bạn có thể thấy các bậc cha mẹ cho một cam kết ví dụ với 'git log --parents' (và' git log --merges' chỉ hiển thị các commit như vậy). –
@PhilippWendler Vì vậy, về cơ bản: Có một cam kết hợp nhất tôi luôn biết bằng cách nhìn vào lịch sử, rằng cam kết này là kết quả của một hợp nhất (là thông tin mà các chi nhánh đóng góp vào việc hợp nhất này cũng giữ?). Sử dụng --squash không có cách nào để biết rằng cam kết này là kết quả của việc hợp nhất. Tôi có hiểu chính xác không? – quaylar