2010-02-19 15 views
5

Tôi đã cố gắng sử dụng Git trên các dự án cá nhân của mình trong gần một tháng nay.Khái niệm của Git về chỉ mục cải thiện hoặc thay đổi quy trình làm việc của bạn như thế nào?

Tôi có một sự hiểu biết khá tốt về bộ lệnh cơ bản và trải nghiệm người dùng không tuyệt vời, tôi vẫn thấy mình thích Git nhiều hơn các VCS khác mà tôi đã sử dụng trong quá khứ.

Tuy nhiên, một khái niệm mà tôi vẫn không nghĩ rằng mình đã "nhận" là mục đích thực sự của chỉ mục. Tôi có cảm giác này tôi không tận dụng lợi thế của một số lợi ích nó được dự định để ban cho.

Mục đích của việc có khu vực dàn dựng là gì? Đến từ đất SVN, tôi rất quen với việc xử lý bản sao làm việc của mình như là khu vực dàn dựng của tôi và những bức ảnh chụp của tôi cho các cam kết của tôi được lấy từ này.

Vì vậy, câu hỏi của tôi là:

Mức độ gián tiếp bổ sung này cung cấp cho bạn điều gì? Chỉ số đã cải thiện hoặc thay đổi quy trình làm việc bình thường của bạn như thế nào? Bạn có thể cung cấp bất kỳ kịch bản nào có Chỉ số cho phép bạn làm điều gì đó có thể gây rắc rối nếu không có nó?

+0

Xem thêm http://stackoverflow.com/questions/1836801/git-should-i-ignore-the-index-or-is-there-a-killer-application-for-it –

+0

+1 để phân biệt cú pháp tiêu đề câu hỏi rất tốt. – WinWin

Trả lời

7

Chắc chắn có lần khi tôi bắt đầu làm việc trên một tính năng hoặc sửa lỗi, và sau đó nhận thấy một lỗi đánh máy nhanh hoặc một số điều nhỏ khác (có lẽ một dòng) cần sửa. Thay vì bỏ tất cả công việc của tôi, hoặc thậm chí sử dụng git stash, tôi chỉ có thể cam kết rằng chỉ là thay đổi nhỏ bé thông qua chỉ mục; tất cả các công việc khác của tôi vẫn còn đó, nhưng bây giờ cam kết cụ thể hơn: nó chỉ cho thấy sửa chữa nhỏ, thay vì bị chôn vùi trong hàng tá các thay đổi khác. Nó được làm cho một lịch sử sạch hơn nhiều, giúp bạn dễ dàng tìm kiếm nhật ký cho các thay đổi vì chúng không được trộn lẫn với các cam kết khác.

Trong trường hợp xung đột hợp nhất (phức tạp, lớn), bạn cũng có thể thêm mỗi thay đổi mà tôi thực hiện vào chỉ mục, vì vậy tôi biết những xung đột nào tôi đã khắc phục và những xung đột nào cần xử lý.

3

Nói cá nhân, tôi đang trải qua một cuộc xung đột hợp nhất lớn vào lúc này và tôi phải sửa từng mục một. Trong trường hợp này, tôi có thể thực hiện một 'git add' trên các tập tin mà tôi đã hợp nhất, và vẫn giữ một ca khúc riêng biệt của những cái tôi cần sửa.

Khi tôi đã thực hiện xong, tôi có thể thực thi các biên dịch thử và sau đó thêm lại bất kỳ thay đổi bổ sung nào cần thiết, trước khi tôi cam kết vào kho lưu trữ.

1

Thỉnh thoảng tôi sẽ thực hiện 'git cherry-pick -n' hoặc 'git merge --squash' để lấy một loạt các thay đổi từ chi nhánh nước ngoài, sau đó tôi sẽ unstage tất cả những thay đổi đó và sử dụng git interactive add (git add -i) để chỉ hiển thị những phần tôi muốn. Bạn thậm chí có thể chọn giai đoạn "hunks" của một diff và để phần còn lại trong trạng thái thay đổi (tuyệt vời cho những điều không cần phải xoay chuyển mà phải là cam kết riêng biệt).

Cũng tuyệt vời khi bạn đang chỉnh sửa toàn bộ các tệp nhưng bạn quyết định thực sự phải cam kết tất cả các tệp liên quan đến X dưới dạng cam kết trước khi tiếp tục. các tệp khác.

Tôi cũng thích cách khu vực dàn dựng hoạt động với các hợp nhất để hiển thị cho bạn những gì không được dàn dựng tự động. Chắc chắn, khu vực chỉ mục không thực sự cần thiết cho điều này nhưng tôi thấy hành vi mặc định của diff cho bạn thấy sự khác biệt của các mục không phải chỉ mục là hữu ích, do đó bạn không bị làm phiền khi nhìn thấy công cụ sân khấu trừ khi bạn sử dụng khác -có.

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