2012-05-12 30 views
28

Tôi muốn, nếu ai đó có thể cung cấp cho tôi nhiều chi tiết hơn khi làm việc với git và kho lưu trữ từ xa. Tôi chưa làm việc với kho từ xa.Bạn có đẩy mọi cam kết đơn lẻ không?

Để kho lưu trữ cục bộ, bạn cam kết những thay đổi nhỏ hơn có thể không quá phá vỡ thế giới. Những gì được đẩy đến kho lưu trữ từ xa? Mọi cam kết địa phương? Hoặc toàn bộ công việc đã được thực hiện, sau đó được sáp nhập với các tác phẩm tổng thể của người khác? Tôi nghĩ rằng nhật ký của kho lưu trữ từ xa phải gây nhầm lẫn, nếu mọi người đẩy mọi cam kết.

+2

Một ưu điểm lớn khác của kho lưu trữ từ xa (hoặc tập trung một, nếu không sử dụng Git) là sao lưu - trong trường hợp bộ nhớ cục bộ bị hỏng. Từ quan điểm sao lưu, thường xuyên đẩy giảm thiểu mất mát dữ liệu tiềm năng. –

Trả lời

25

Đẩy và kéo từ kho lưu trữ từ xa không hoàn toàn quan trọng bằng các cam kết cục bộ của bạn. Thông thường đẩy và kéo một vài lần một ngày là đủ. Giống như @earlonrails cho biết, thường xuyên hơn đẩy có nghĩa là ít khả năng thay đổi xung đột nhưng thường nó không phải là một thỏa thuận lớn.

Hãy suy nghĩ theo cách này, bằng cách cam kết với kho lưu trữ cục bộ của bạn về cơ bản bạn đang nói "Tôi tin tưởng mã này. Nó hoàn tất. Nó chạy. Tôi đã thử nghiệm nó. Tôi sẵn sàng cho người khác xem nó." Nếu bạn muốn đẩy đến respoitory từ xa sau mỗi cam kết, đó là tốt, nhưng miễn là bạn làm điều đó một cách thường xuyên nó không thực sự quan trọng.

Các kho lưu trữ cục bộ sắp theo dõi các thay đổi của bạn để bảo vệ công việc bạn làm. Đại diện từ xa là để phân phối tác phẩm cho tất cả đồng đội của bạn và theo dõi các thay đổi của mọi người. Đồng đội của bạn cần truy cập vào mã của bạn, nhưng thông thường nó không phải là khẩn cấp và có thể đợi đến cuối ngày hoặc bất cứ khi nào bạn muốn đẩy.

+11

Tôi không đồng ý với tuyên bố của bạn về tính toàn vẹn của các cam kết địa phương. Khá thường xuyên tôi thực hiện công việc trong tiến trình cam kết cục bộ trên chi nhánh của tôi, hoặc cam kết đặc biệt, với ý định rebasing và làm sạch (squashing, reword, reorder, vv vv) chi nhánh của tôi trước khi đẩy. IMHO đó là sự thúc đẩy của bạn đến một điều khiển từ xa thể hiện cam kết về chất lượng và quyết toán của changeset của bạn. –

+5

Điều gì sẽ xảy ra nếu máy tính bị lỗi cục bộ bị lỗi? –

+0

Trong những ngày trước khi github, tôi nghĩ rằng đó là thực hành tốt nhất để cam kết kiểm soát phiên bản thường xuyên. Nó cũng ngăn chặn mất mã nếu máy tính xách tay/máy tính bị hỏng. nhưng ya. Tôi không đẩy nó thường xuyên kể từ khi tôi bắt đầu sử dụng git. –

14

Bạn có thể đẩy tới điều khiển từ xa một cách thuận tiện. Vấn đề duy nhất với việc đẩy một loạt các cam kết cùng một lúc là bạn có thể cần phải hợp nhất nhiều xung đột hơn với các tệp bị ảnh hưởng nhiều hơn. Nếu bạn chưa quen với git, tôi khuyên bạn nên git ready.

Điều khiển từ xa hoạt động giống như repo cục bộ, nhưng bạn phải chơi tốt với người khác. Nếu người khác đẩy đến điều khiển từ xa trước khi bạn đẩy. Sau đó, thay đổi của họ sẽ phải được bạn kéo trước khi bạn có thể đẩy. Nếu cả hai đều chạm vào cùng một tệp, vì thay đổi của chúng là lần đầu tiên, bạn sẽ cần hợp nhất hai thay đổi với nhau.

+2

"bạn phải chơi tốt với người khác" - Tôi hiểu, đó là chất của chủ đề này. Rất ít người xen kẽ trong việc nhìn thấy mọi thay đổi nhỏ của tôi. – rynd

+0

Theo như vậy, tôi khuyên bạn nên sử dụng công cụ đánh giá mã, git diff và gitx và gitk. Đây là một bài viết về các công cụ đánh giá mã cho git. http://stackoverflow.com/questions/3713103/best-code-review-tool-for-git/10434975#10434975 – earlonrails

7

Tôi cố gắng đẩy mọi cam kết cục bộ nhất có thể (tôi sử dụng Git). Hiếm khi tôi có từ 2 cam kết trở lên cục bộ. Nếu không, có nguy cơ xung đột không dễ chịu để giải quyết.

Tôi thích sử dụng rebase hơn là hợp nhất để giữ lịch sử tuyến tính hơn. Nếu tôi có 2 commit A và B (B lớn hơn) cục bộ, và B xung đột với những thay đổi sắp tới, sau khi giải quyết coflicts rebase tôi phải checkout B, kiểm tra biên dịch, có thể chạy test, và chỉ sau đó chuyển sang A và đẩy tất cả .

Đó là lý do tại sao tôi muốn thúc đẩy mọi thứ tôi có ngay khi có thể.

+0

Bạn có * thực sự * luôn luôn làm việc trên cùng một mã với những người khác như vậy mà một hoặc hai cam kết là đủ để giới thiệu một cuộc xung đột mà bạn cần phải giải quyết? –

+1

Không phải lúc nào, nhưng tình huống như vậy xảy ra theo định kỳ (tôi không thể nói điều đó thường xuyên), và điều này gây phiền nhiễu, vì vậy tôi muốn tránh nó. 90% của tất cả các xung đột là do nhập khẩu java. –

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