2012-03-09 14 views
9

Mã của chúng tôi là trên Github và chúng tôi sử dụng Pull Requests để xem lại mã. Kết quả của việc xem xét một cam kết có thể được hoàn nguyên hoặc thay đổi. Điều này có thể làm lộn xộn lịch sử cam kết. Lệnh rebase không được khuyến khích vì các cam kết đã được "công khai".Làm thế nào để giữ một lịch sử sạch sau khi GitHub Pull Yêu cầu xem xét mã?

Nếu bạn thực hiện đánh giá mã theo cách tương tự: Bạn giải quyết vấn đề này bằng cách nào? Làm thế nào để giữ cho lịch sử của bạn sạch sẽ?

Trả lời

6

Khôi phục các nhánh không phải là tổng thể (maint *, tiếp theo) là ok ngay cả khi chúng được xuất bản. Chỉ cần sử dụng các nhánh chủ đề để xuất bản nội dung mới cần được xem xét. Sau đó xóa chúng trong bất kỳ trường hợp nào sau khi chúng được hợp nhất thành chính hoặc sau khi yêu cầu kéo đã bị từ chối. Xem man gitworkflows

+0

Tôi đã thử cả hai cách tiếp cận và điều này làm việc tuyệt vời cho tôi. Cảm ơn! –

1

Tôi khuyên bạn chỉ cần vượt qua lịch sử cam kết bị lộn xộn.

Hãy nhớ rằng khi bạn nhìn vào lịch sử, bạn thường nhìn vào tổ tiên của một số cam kết hiện tại. Nếu quá trình xem xét mã của bạn tạo ra các nhánh chết cho mã bị từ chối hoặc được gửi lại dưới dạng một cam kết khác, thì những thứ đó sẽ không có trong bất kỳ tổ tiên như vậy, và thường sẽ không được nhìn thấy.

Dưới đây là một ví dụ dài dòng nhưng đầy đủ điều này, sử dụng git log như người xem lịch sử:

$ git init example 
Initialized empty Git repository in /private/tmp/example/.git/ 
$ cd example/ 
$ date >date 
$ git add date 
$ git commit -am base 
[master (root-commit) 5108762] base 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 date 
$ date >date 
$ git commit -am bad 
[master 440c3b6] bad 
1 files changed, 1 insertions(+), 1 deletions(-) 
$ git log 
commit 440c3b61b279e8b7cd5f5f656984b63ba18e518b 
Author: Tom Anderson <[email protected]> 
Date: Sat Mar 10 09:15:48 2012 +0000 

    bad 

commit 5108762ba7011464fe3c57cf762d0d18f337f68c 
Author: Tom Anderson <[email protected]> 
Date: Sat Mar 10 09:15:28 2012 +0000 

    base 
$ git branch postreview 5108762ba7011464fe3c57cf762d0d18f337f68c 
$ git checkout postreview 
Switched to branch 'postreview' 
$ date >date 
$ git commit -am good 
[postreview 42e5257] good 
1 files changed, 1 insertions(+), 1 deletions(-) 
$ git log 
commit 42e5257addf73b516676d24e7092b0e4768d3564 
Author: Tom Anderson <[email protected]> 
Date: Sat Mar 10 09:17:30 2012 +0000 

    good 

commit 5108762ba7011464fe3c57cf762d0d18f337f68c 
Author: Tom Anderson <[email protected]> 
Date: Sat Mar 10 09:15:28 2012 +0000 

    base 

Mặc dù xấu cam kết là trong kho, nó không hiện lên trong đầu ra git log . Trong trường hợp này, tôi đã tạo một chi nhánh mới để thực hiện công việc sau khi đánh giá của tôi, nhưng trong thực tế, bạn có thể muốn di chuyển tổng thể cho công việc mới, để lại công việc cũ trên một nhánh chết.

+0

Nếu tôi nhận được ví dụ của bạn đúng, điều này chỉ hoạt động cho lần commit cuối cùng. Hoặc là? Nếu không tôi có thể cần phải anh đào chọn vào 'postreview'? –

+0

Tôi đã nghĩ rằng bạn sẽ bắt đầu chi nhánh mới của bạn từ thời điểm trước khi bạn bắt đầu viết mã đang được xem xét, có khả năng một số cam kết trở lại, vì vậy có, bạn sẽ chọn tất cả mọi thứ bạn muốn giữ cho chi nhánh mới. Về cơ bản nó giống như một rebase, nhưng với một số chỉnh sửa cho các cam kết trên đường đi, và không xóa các cam kết cũ. Trong thực tế, bạn có thể làm điều này như là một rebase. –