2012-04-25 31 views
7

Có thể lấy 'git log' để cung cấp ngày khi một changeset hạ cánh trên chi nhánh thay vì ngày khi changeset được tạo? 'git log --graph' (ví dụ đầu ra cắt ngắn dưới đây) cho tôi nhiều thứ tôi muốn, nhưng nó vẫn in ngày tháng khi các cá thể changeset được tạo ra thay vì khi chúng được sáp nhập vào nhánh này.git log foo..bar - cách xem * hợp nhất ngày * cho changesets?

* commit 7e8d68fc58b915cc17bca41be833c4f7a062cd3c 
|\ Merge: 1b4f10d af0dcdd 
| | Date: Wed Apr 25 17:40:16 2012 +0100 
| |  Merge branch 'foo' 
| * commit af0dcdd078197a852fcfad11c5111aa11579aa05 
| | Date: Wed Apr 25 17:36:50 2012 +0100 
| |  t2: adding lorem ipsum again 
| * commit 569f5de0eb40cbf198771812f9b099cf71b5b056 
| | Date: Wed Apr 25 17:36:36 2012 +0100 
| |  t1: adding lorem ipsum 
* | commit 1b4f10d3eea7c9c6304f7b1fd41818b932e4dad0 
| | Date: Wed Apr 25 17:38:24 2012 +0100 
| |  t4: fi fo fa fum x 2 
* | commit d25fa0359fbe655b6a4adeb6225ac283b3543ece 
|/ Date: Wed Apr 25 17:38:10 2012 +0100 
|  t3: fi fo fa fum 
* commit d3239b3e327f740fc7194ecf164538361f715ab5 
    Date: Wed Apr 25 17:34:50 2012 +0100 

Ở trên, đầu ra là từ chi nhánh master. t1 và t2 được tạo trên chi nhánh foo; t3 & t4 được tạo trên bar. Sau đó, bar được hợp nhất thành master, sau đó hợp nhất foo thành chính.

Trả lời

4

Bạn có thể thấy một phần câu trả lời: Khi chi nhánh foo được hợp nhất thành master, nó đã tạo một cam kết mới (7e8d68) với hai cha mẹ.

Nhưng khi bar được hợp nhất thành master, đó là một sự hợp nhất tua nhanh. Nghĩa là, tất cả các cam kết trên bar là mới hơn so với công việc mới nhất trên master, vì vậy chúng chỉ có thể được kết thúc vào cuối.

Điều đó làm cho bố cục đơn giản hơn và do đó, đó là hành vi mặc định. Nhưng nó không để lại hồ sơ về việc hợp nhất - theo như lịch sử của bạn là có liên quan, nó sẽ giống như những cam kết đã được thực hiện trên master ở nơi đầu tiên.

Để tránh xung đột, bạn có thể nói rõ ràng để tránh việc hợp nhất nhanh: nghĩa là mọi hợp nhất đơn lẻ sẽ dẫn đến việc hợp nhất cam kết với hai cha mẹ, ngay cả khi có thể hợp nhất nhanh. Để làm điều đó, chỉ cần sử dụng cờ --no-ff trên lệnh git merge.

Thật không may, bởi vì đó là một sự thay đổi trong sáp nhập hành vi chứ không phải đăng hành vi, bạn sẽ không thể làm điều đó hồi tố - thông tin từ hòa trộn nhanh về phía trước trước đó của bạn không tồn tại, do đó không có cách nào để có được git log để hiển thị nó.

+0

Cảm ơn! Tôi cho rằng tôi sẽ phải sử dụng chế độ xem '--graph' để hiểu nó ... –

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