Tôi có nên mong đợi nhóm của mình có nhiều hơn một trình độ cơ bản với hệ thống kiểm soát nguồn của chúng tôi không?


48

Công ty của tôi đã chuyển từ Subversion sang Git khoảng ba tháng trước. Chúng tôi đã có nhiều tuần thông báo trước khi chuyển đổi. Vì tôi chưa bao giờ sử dụng Git trước đây (hoặc bất kỳ DVCS nào khác), tôi đã đọc Pro Git và dành một ít thời gian để lưu trữ các kho lưu trữ của riêng mình và chơi xung quanh, để khi chúng tôi chuyển đổi, tôi có thể tiếp tục làm việc với nỗi đau tối thiểu. Bây giờ tôi là 'Git guys' theo mặc định.

Với một vài ngoại lệ, hầu hết nhóm của tôi vẫn không biết Git hoạt động như thế nào. Ví dụ, họ vẫn nghĩ các nhánh là bản sao hoàn chỉnh của mã nguồn và thậm chí còn đi xa đến mức sao chép repo vào nhiều thư mục (mỗi thư mục một nhánh). Họ thường nhìn vào Git như một hộp đen đáng sợ.

Do tính chất cơ bản của kiểm soát nguồn trong công việc hàng ngày của chúng tôi (không đề cập đến lượng sức mạnh vô lý mà Git dành cho chúng tôi), tôi cho rằng bất kỳ nhà phát triển nào không đạt được mức độ thành thạo nhất định với nó là trách nhiệm pháp lý .

Tôi có nên hy vọng nhóm của mình có ít nhất một số hiểu biết về cách Git hoạt động nội bộ và cách sử dụng nó ngoài các hoạt động kéo / hợp nhất / đẩy cơ bản nhất không? Hay tôi chỉ đang làm một cái gì đó từ không có gì?


30
Công ty có cung cấp bất kỳ khóa đào tạo nào về Git không?
yannis

9
Bất kỳ nhà phát triển nào không làm việc là một trách nhiệm pháp lý. Giả sử họ có năng suất cao, biết hay không biết git là không quan trọng. Vào cuối ngày nó chỉ là một công cụ khác.
MrFox

9
Tôi sẽ gọi sự hiểu biết về cách các chi nhánh Git hoạt động một phần của "trình độ cơ bản" với nó ...
Shauna

16
Nếu đồng đội của bạn không thể hiểu Git, bạn đã gặp vấn đề lớn hơn kiểm soát nguồn.
Jordan Bentley

4
@Caleb Đó không phải là một sự khoe khoang. Cách xa nó.
Joshua Smith

Câu trả lời:


49

Sự chuyên nghiệp đương nhiên sẽ ra lệnh rằng một nhà phát triển trở nên quen thuộc với các công cụ tiêu chuẩn của nhóm của họ, ngay cả khi họ là người mới và không quen thuộc (hoặc thậm chí không mong muốn).

Tuy nhiên, một vài điều trong bài viết của bạn cho tôi tạm dừng.

Chúng tôi đã có nhiều tuần thông báo trước khi chuyển đổi.

Tuần nào? Trao đổi kiểm soát nguồn là một vấn đề lớn. Đáng lẽ phải có nhiều tháng thông báo dẫn đến một sự thay đổi như thế.

Với một vài ngoại lệ, hầu hết nhóm của tôi vẫn không biết Git hoạt động như thế nào.

Vì vậy, công ty của bạn chuyển sang một hệ thống kiểm soát nguồn mà ít ai, nếu có, hiểu vào thời điểm đó?

Trừ khi có một số bối cảnh khác, có vẻ như toàn bộ động thái đã không được nghĩ ra (di chuyển, không phải là sự lựa chọn - Tôi là một người hâm mộ cuồng nhiệt).


3
Được cấp. Họ đã chuyển sang một hệ thống mà hầu như không ai hiểu. Sẽ là khôn ngoan khi cung cấp đào tạo trước khi chuyển đổi. Tuy nhiên, tôi cảm thấy thoải mái khi sử dụng Git với thực hành chưa đầy một tuần. Tôi không cảm thấy mình quá căng thẳng, vì vậy tôi tự hỏi liệu có phù hợp để mong đợi những người khác cũng được thực hành không.
Joshua Smith

3
Có ai bận tâm để tìm ra các quy trình công việc bạn có và ánh xạ chúng đến các nguyên thủy mà VCS mới phải cung cấp không? Thật dễ dàng để tự bắn vào chân mình bằng những mệnh lệnh nghe giống như những lệnh bạn đã quen và bạn thực sự cần một ai đó để sắp xếp thứ gì đó như thế này. Bloke chịu trách nhiệm cho sự thay đổi này ở đâu?
Lars Viklund

19
@JoshuaSmith Khi thay đổi các tiêu chuẩn hoặc công cụ phát triển, bạn phải luôn luôn vận hành theo kiểu chuyển đổi "Không có đứa trẻ nào bị bỏ lại phía sau". Nhóm chỉ có thể di chuyển nhanh như thành viên chậm nhất của mình, vì vậy hãy đảm bảo rằng mọi thứ được làm rõ ràng và giảm xuống mức thấp nhất có thể trước khi quá trình chuyển đổi xảy ra. Chắc chắn bạn có thể gán cho nhiều người một trách nhiệm như bạn muốn, nhưng loại bỏ "trách nhiệm pháp lý" là một việc khó khăn và lộn xộn, đặc biệt là đối với một công cụ kiểm soát nguồn tầm thường.
maple_shaft

3
Âm thanh giống như bạn "Kết xuất GIT cho họ" thay vì "Đưa ra một hệ thống kiểm soát sửa đổi mới" - GIT là một chương trình kiểm soát nguồn. Nó không phải là một hệ thống kiểm soát nguồn - điều đó sẽ yêu cầu hướng dẫn sử dụng, đào tạo, lịch bảo trì, quản lý vòng đời, v.v. Xin vui lòng cho tôi biết bạn có một bản sao lưu tại chỗ
mattnz

7
Học cách git hoạt động là khá tầm thường. Chắc chắn không mất một tháng để học cách sử dụng nó. Theo ý kiến ​​đơn giản của tôi, "Các bạn, chúng ta sẽ sử dụng git trong vài tuần nữa. Hãy dành vài giờ để học cách sử dụng nó, có một loạt các tài nguyên trực tuyến.", Sẽ là quá đủ.
Moox

34

Chúng tôi đã giới thiệu Git nơi tôi làm việc và đương nhiên có sự phản kháng. Đó là cho một dự án mới vì vậy chúng tôi hiện đang duy trì hai kho lưu trữ.

Một phần của vấn đề là mọi người sẽ không thấy được lợi ích của việc chuyển sang SCM khác khi người mà họ đang sử dụng làm việc cho họ. Nó giúp ích khi chúng tôi ngồi lại với nhóm của chúng tôi trong một vài buổi, trong đó chúng tôi sẽ chỉ hiển thị các trường hợp sử dụng từ các dự án của chúng tôi và cách Git làm cho nó dễ dàng hơn. Ví dụ: những điều đã giúp chúng tôi:

  • Chi nhánh địa phương để khuyến khích thử nghiệm
  • Git bisect để dễ dàng theo dõi lỗi
  • cam kết thường xuyên mà không làm gián đoạn người khác
  • Chuyển đổi nhanh giữa các chi nhánh

v.v ... Mỗi người trong số họ đã giải quyết một vấn đề mà chúng tôi đã gặp phải với SCM trước đây và vì vậy mọi người có thể đánh giá cao Git hơn.

Một điều khác là bạn không thể mong đợi mọi người đi ra ngoài và đọc sách về nó bởi vì rất ít ý chí. Có lẽ họ cần phải hoàn thành công việc, có trách nhiệm khác hoặc bất kỳ lý do nào.

Vì vậy, là 'chuyên gia Git', bạn phải ngồi xuống và làm cho mọi người sử dụng nó dễ dàng nhất có thể. Họ muốn được viết mã, không gây rối với hệ thống SCM của họ.

CLI của Git là những vấn đề khó hiểu và tầm thường (đối với bạn và tôi) sẽ ngăn mọi người làm việc. Đây là những gì đã xảy ra trong nhóm của chúng tôi (nhớ rằng, đây là những nhà phát triển khá có năng lực):

  • Git với SSH trên Windows là một vấn đề phổ biến.
  • Mọi người sẽ kéo, hợp nhất, nhưng không đẩy hợp nhất. Vì vậy, biểu đồ sẽ là một mớ hỗn độn lớn
  • Vấn đề về hiệu năng trên Windows khiến "trạng thái git" mất 15 giây
  • Không thể tìm ra làm thế nào để kéo một chi nhánh mới. Họ sẽ thực hiện một "kiểm tra git -b", chi nhánh của bất cứ điều gì họ đang làm
  • EGit trong nhật thực có một thực đơn áp đảo. Cuối cùng đã nói với mọi người sử dụng dòng lệnh lúc đầu
  • Dựa trên mục trước đó, hợp nhất và thiết lập git mergetool
  • Nhầm lẫn về sự khác biệt giữa "git add" và "git commit" và "git đẩy".

Chúng tôi vẫn nhận được một số kháng cự nhưng mọi người chắc chắn có thể thấy những lợi ích. Điều quan trọng là có một vài người Git để được hướng dẫn và sẵn sàng giúp đỡ. Ngoài ra tôi sẽ tránh dạy những thứ hay ho như reset / rebase / - sửa đổi / v.v. bởi vì hầu hết mọi người sẽ sử dụng Git như SVN, tốt hơn là để họ khám phá nó nếu họ mong muốn.


7
@JoshuaSmith Bạn dường như có kỳ vọng cao của mọi người. Bạn có cảm thấy thất vọng về bạn bè thường xuyên không?
maple_shaft

4
@maple_shaft Tôi hiếm khi thất vọng với các đồng nghiệp của mình trong nhóm này (công việc cuối cùng của tôi là một câu chuyện khác). Thông thường những người ở đây rất chuyên nghiệp và rất vui được làm việc cùng. Và vâng, tôi có những kỳ vọng cao cho bản thân và những người xung quanh. Tôi không phải là một jerk về nó mặc dù. Điều này có lẽ là ngây thơ, nhưng tôi cảm thấy rằng nếu tất cả chúng ta đòi hỏi sự xuất sắc từ nhau thì chắc chắn chúng ta sẽ cải thiện.
Joshua Smith

9
@JoshuaSmith, nếu bạn mong mọi người thường xuyên có thời gian để đọc sách, tôi sẽ mạo hiểm đoán: Bạn không có con, phải không?
Kyralessa

13
@JoshuaSmith mọi người có được trả tiền để đọc những cuốn sách đó không? Nếu ông chủ của tôi nói với tôi rằng "chúng tôi đang chuyển đổi công nghệ, tôi hy vọng bạn sẽ học được nó vào thời gian rảnh vào tháng tới", tôi sẽ rất bực mình.
Matsemann

13
@JoshuaSmith, vâng tôi muốn nói vậy - bất cứ điều gì một nhân viên làm vào thời gian riêng của họ là thêm, không bắt buộc. Vì vậy, mua chuyển đổi, bạn nên cung cấp cho họ đủ thông tin để sử dụng công cụ hoặc đủ thời gian trong khi làm việc để họ tự học (thường được cung cấp dưới dạng đào tạo, ngay cả khi đó chỉ là một buổi đào tạo vào giờ ăn trưa). Bây giờ, nếu các nhân viên là những người làm việc tự do, có một trường hợp họ đã tự đào tạo, nhưng không phải trong hợp đồng của họ. Nhân viên mong đợi những lợi ích nhất định - như đào tạo, và không bị căng thẳng khi có một sự thay đổi công việc đổ vào họ như thế này.
gbjbaanb

13

Thành thạo so với Git-mania

Một thuật ngữ như thành thạo cơ bản có thể có nghĩa là những điều khác nhau cho những người khác nhau. Rất nhiều người dường như có git-mania (không có gì sai với điều đó). Nhiều người trong chúng ta đã bị thiêu rụi thực sự bởi sự cẩu thả của chính mình và của người khác với sự kiểm soát nguồn.

Tại sao nó có vấn đề (rất nhiều)

Các công cụ kiểm soát nguồn rất quan trọng vì việc sử dụng sai có thể làm chậm không chỉ một người, mà cả một nhóm. Việc lạm dụng Git sẽ ít gây ra vấn đề hơn so với việc lạm dụng SVN, CVS và các hệ thống khác. Trong lịch sử, việc sử dụng các hệ thống khóa các tệp bị khóa đặc biệt có vấn đề và các công ty đã thuê các nhóm xây dựng riêng biệt để khi ai đó gặp rắc rối, có một chuyên gia thông thạo hầu như không làm gì ngoài kiểm soát nguồn có thể chữa vết thương cho kho lưu trữ. Điều này một phần giải thích một số niềm đam mê bạn tìm thấy đằng sau git.

Trình độ cơ bản trông như thế nào?

Một số tiêu chí cụ thể bao gồm:

  • Không có tài liệu tham khảo:

    • Có thể thêm tệp, cam kết thay đổi, đẩy và kéo cập nhật.
    • Có thể xem trạng thái và hoạt động sửa đổi.
    • Có thể phân nhánh và hợp nhất nhanh chóng và không có lỗi giới thiệu.
    • Có thể sử dụng kiểm tra phù hợp.
    • Tạo các bình luận cam kết đáp ứng các tiêu chí của nhóm để bình luận.
    • Khác biệt thay đổi giữa bản sao làm việc và lưu trữ.
  • Với tài liệu:

    • Thêm người dùng và thông tin đăng nhập cho repo địa phương.
    • init một repo địa phương.
    • Quản lý repo từ xa.
    • Định cấu hình các tệp bị bỏ qua, tạo cặp khóa công khai / riêng tư PKI.
    • Di chuyển và xóa các tập tin.
    • Sử dụng bisect để tìm thay đổi đã giới thiệu một lỗi cụ thể.

Một mô hình tinh thần vững chắc của git và mã được quản lý là rất quan trọng để tránh sai lầm.

Bạn sẽ thêm gì cho trình độ / chuyên môn nâng cao?

Sử dụng thành thạo là điều cần thiết cho các nhà phát triển và có thể một số thành viên khác trong nhóm của bạn. Các công cụ như Git là chi phí hoạt động và nên được học ở mức độ có thể gần như tự động. Giảm thiểu thời gian và mất tập trung được tạo ra bằng cách sử dụng các lệnh git được lặp lại hàng ngàn lần mỗi năm có giá trị cao.

Sẽ luôn có một số thành viên trong nhóm của bạn là những người sử dụng năng lượng và sử dụng hầu hết mọi lệnh với hầu hết mọi tùy chọn. Đề nghị của tôi là các thành viên trong nhóm được khuyến khích tiếp tục học git (và các công cụ khác) cho đến khi ROI cho việc học giảm xuống dưới giá trị của việc làm một cái gì đó khác trong dự án, với giới hạn chính là bắt kịp với các mục đã được ghi từ hiện tại tăng tốc.


11

GIT là một công cụ duy nhất để thực hiện một công việc và một trong những vấn đề lớn nhất của nó là nhiều nhà truyền giáo GIT mong muốn tất cả người dùng GIT trở thành những chuyên gia về nắp ca-pô hiểu được những điểm tốt nhất về cách thức hoạt động của nó. Đây là điểm yếu lớn nhất của GIT - để sử dụng nó, bạn cần biết nó hoạt động như thế nào. Không có công thức nấu ăn với GIT, bạn dự kiến ​​sẽ là một chuyên gia GIT hoặc không sử dụng nó. Thật tuyệt khi bạn đọc Pro-GIT, tổ chức của bạn cần một bậc thầy GIT "goto" (hoặc hai) để tối đa hóa khoản đầu tư vào nó, bởi vì không phải nhà phát triển nào cũng muốn trở thành một GIT Guru - và điều đó cũng ổn.

Nhóm cần biết cách sử dụng GIT (Thực tế họ chỉ cần biết cách sử dụng các phần của GIT mà quy trình công việc yêu cầu họ sử dụng), chứ không phải cách GIT hoạt động. Thật bất lợi khi mong đợi mọi nhà phát triển biết mọi chi tiết về mọi công cụ họ sử dụng. Nếu bạn chưa có sách công thức hỗ trợ quy trình làm việc của mình, bạn chưa triển khai GIT, bạn đã đổ nó cho các nhà phát triển.

Tôi không cho khỉ cách GIT hoạt động, miễn là tôi biết cách làm cho git hoạt động với tôi.


1
Và có nhu cầu đào tạo tùy chỉnh ... và một lần nữa, Linus không mong đợi bất kỳ ai nắm bắt được tất cả các kỹ thuật của git, đó là lý do tại sao có hai loại lệnh: sứ và hệ thống ống nước.
ZJR

1
Có rất nhiều công thức cho git nếu tất cả những gì bạn muốn làm là chuyển từ quy trình công việc bạn đã sử dụng trong Nhãn hiệu X sang quy trình công việc trong Git.
Jherico

10

Đúng.

Cho dù "công ty" đã quyết định sử dụng công cụ nào, nhóm phát triển của bạn nên dành thời gian học cách sử dụng công cụ này đúng cách. Không có gì làm tổn thương năng suất hơn một loạt các nhà phát triển sợ hoặc không biết gì về một công cụ. Nếu họ đang sử dụng sai hoặc làm việc chống lại nó, các vấn đề sẽ nảy sinh và khi đến với anh chàng, bạn sẽ được giao nhiệm vụ dọn dẹp mớ hỗn độn.

Git là một quá trình chuyển đổi khó khăn đối với nhiều người, vì vậy một buổi tập huấn bắt buộc có thể theo thứ tự. Điều này sẽ giúp giải quyết rất nhiều vấn đề mà mọi người đang gặp phải.


3
"Không có gì làm tổn thương năng suất hơn một loạt các nhà phát triển sợ hoặc không biết gì về một công cụ." Vì vậy, có lẽ một công ty sẽ trở nên điên rồ khi được phát triển với một công cụ mà nhóm chưa được đào tạo và không hiểu.
Jaydee

Các công ty, đặc biệt là những công ty lớn, đôi khi phải thúc đẩy công nghệ. Tt cũng có thể là một nhóm trong một tổ chức đã thực hiện cú hích ban đầu và đang sử dụng công cụ đầy đủ.
Bill Leeper

3

Tôi chỉ sử dụng Git trong môi trường cá nhân chứ không phải chuyên nghiệp và trong khi tôi thích sức mạnh của nó và ý tưởng về kiểm soát nguồn phi tập trung hơn, nó có vấn đề lớn. Git có sự trừu tượng bị rò rỉ và phải mất nhiều lệnh để thực hiện những điều đơn giản (ví dụ để thực hiện thay đổi: git add, git commit, sau đó git đẩy). Ngoài ra, một số tài liệu còn thiếu và / hoặc khó hiểu như với mô tả lệnh rebase ... "Cam kết cục bộ cổng chuyển tiếp đến đầu dòng được cập nhật". Tôi không biết điều đó có nghĩa là gì, và mặc dù bây giờ tôi biết bạn có thể di chuyển cam kết và viết lại lịch sử với nó (một phiền toái khác ... tại sao bạn lại được phép làm điều này ???) Tôi sẽ không bao giờ đoán được điều đó từ lệnh đó sự miêu tả. Tôi nghĩ rằng một số đọc về một phần của nhóm của bạn, và một số đào tạo thêm do bạn cung cấp là theo thứ tự.


2

Đào tạo và hiểu biết là những yêu cầu tối thiểu. Một người chịu trách nhiệm nên đảm bảo rằng có một kế hoạch về cách nhóm của bạn sẽ sử dụng nó. Bạn sẽ không chấp nhận một ngôn ngữ lập trình mới mà không có hướng dẫn. Đào tạo lái xe hiệu quả hơn nhiều khi các quy tắc thiết lập đường được kết hợp.


1

Không; Tôi nghĩ thật hợp lý khi mong đợi những điều sau:

  1. Làm các công việc hàng ngày (cam kết, đẩy, kéo, rẽ nhánh, hợp nhất, chia đôi, v.v.) mà không cần cầm tay.
  2. Làm các công việc không thường xuyên mà không cần hướng dẫn lặp đi lặp lại. (Một vài lần lặp lại là ok - Tôi phải gặp ai đó 2-3 lần trước khi tên của họ thực sự dính vào.)

Nếu họ không thể làm số 1, thì phần đào tạo của bạn sẽ không đủ. Nếu họ không thể làm số 2, thì trước tiên hãy đảm bảo bạn giải thích mọi thứ rõ ràng trước khi quá buồn.


Đây thực sự không phải là một câu trả lời cho câu hỏi; câu hỏi là mức độ thành thạo mà anh ta mong đợi từ người khác, chứ không phải làm thế nào để anh ta cải thiện trình độ của họ. Tôi sẽ gỡ xuống khi bạn thông báo cho tôi bằng nhận xét với @MyName rằng bạn đã sửa câu trả lời của mình thành chủ đề.
Jimmy Hoffa

@JimmyHoffa Tôi nghĩ bạn hiểu nhầm câu trả lời của tôi. Họ cần thành thạo các công việc hàng ngày / thường ngày và nhanh chóng nhận các nhiệm vụ khác một cách hợp lý. Tôi đã xác định được một vài nguyên nhân có thể , nhưng đã cố gắng tránh việc kê đơn bất kỳ hành động khắc phục nào. Bạn đang đọc giữa dòng và ngoại suy nếu đó là những gì bạn thấy.
pss

Không, câu hỏi là "Tôi có nên hy vọng nhóm của mình có nhiều hơn mức thành thạo cơ bản ..." và bạn đã không nói "Có, đây là tại sao" và bạn cũng không nói "Không, đây là tại sao". Bạn đã trả lời một câu hỏi với một câu hỏi. Tôi đánh giá cao câu trả lời của bạn rất chu đáo và nội dung hữu ích nhưng bạn vẫn nên trả lời câu hỏi có hoặc không và cố gắng sao lưu lý do tại sao bạn nghĩ có hay không ... Sau đó, vui lòng để lại bên dưới câu trả lời của bạn . Có lý?
Jimmy Hoffa

@JimmyHoffa Câu trả lời của tôi "Không, đây là mức tối thiểu bạn nên mong đợi một cách hợp lý"; Tôi chỉ không nói nó bằng những từ chính xác.
pss

Ồ, tôi nghĩ rằng bạn đang ám chỉ một từ "có", đặt lời nói đầu đó vào và nó giải quyết câu hỏi, nếu không thì chẳng có nghĩa gì cả
Jimmy Hoffa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.