Có ý nghĩa khi thực hiện git rebase
trong khi vẫn giữ dấu thời gian cam kết không?git rebase mà không thay đổi dấu thời gian cam kết
Tôi tin rằng hậu quả là chi nhánh mới sẽ không nhất thiết phải có ngày tháng theo thứ tự thời gian. Có phải đó là tất cả về mặt lý thuyết có thể là tất cả không? (ví dụ: sử dụng lệnh đường ống dẫn nước; chỉ tò mò ở đây)
Nếu về lý thuyết, có thể thực hành với rebase, không thay đổi dấu thời gian không?
Ví dụ, giả sử tôi có cây sau:
master <jun 2010>
|
:
:
: oldbranch <feb 1984>
: /
oldcommit <jan 1984>
Bây giờ, nếu tôi rebase oldbranch
trên master
, ngày của những thay đổi cam kết từ tháng 2 năm 1984 đến tháng sáu năm 2010. Có thể thay đổi hành vi sao cho dấu thời gian cam kết không bị thay đổi? Cuối cùng, tôi sẽ có được:
oldbranch <feb 1984>
/
master <jun 2010>
|
:
Điều đó có hợp lý không? Thậm chí nó có được cho phép trong git có một lịch sử mà một cam kết cũ có một cam kết gần đây hơn với tư cách là một phụ huynh không?
Thật thú vị khi câu trả lời cho câu hỏi thực sự là "bạn không cần phải làm gì cả - đó là cách hoạt động được mặc định". Nhưng bây giờ giả sử bạn muốn cam kết được sắp xếp theo thứ tự ngày thích hợp trong khi thực hiện rebase (đó là kịch bản khá tự nhiên nếu bạn nghĩ về nó). Bây giờ, tôi đã không thể tìm thấy làm thế nào để đạt được điều đó, và đăng q của tôi là http://stackoverflow.com/questions/12270357/really-flatten-a-git-merge – pfalcon
David đề cập đến một tùy chọn khác để đặt lại ngày bắt đầu: 'git rebase --committer-date-là-author-date SHA'. Xem [câu trả lời đã chỉnh sửa của tôi dưới đây] (http://stackoverflow.com/a/2976598/6309) – VonC
Tôi vừa viết một [câu trả lời mở rộng] (http://stackoverflow.com/a/30819930/4265352) trên [tương tự câu hỏi] (http://stackoverflow.com/q/30790645/4265352) mà tác giả đã thử các câu trả lời được giải thích ở đây và không thể áp dụng chúng một cách thỏa đáng. – axiac