Sự khác biệt lớn giữa TFVC (TFS Version Control) và Git để kiểm soát nguồn khi sử dụng Visual Studio 2013 là gì?


101

Có rất nhiều câu hỏi và câu trả lời về Git so với Kiểm soát nguồn TFVC, nhưng không có câu trả lời hiện tại nào đề cập đến việc tích hợp Git vào Máy chủ / Dịch vụ Team Foundation mà tôi có thể tìm thấy.

Tôi đang bắt đầu phát triển đồng cỏ xanh sử dụng nhiều ngôn ngữ (C #, C ++, PHP, Javascript, MySSQL) bằng Visual Studio 2013. Trong tương lai, sẽ có một số phát triển iOS. Tôi rất quen thuộc với SVN, VSS và TFVC để kiểm soát nguồn. Tuy nhiên, tôi chưa bao giờ sử dụng Git. Tôi thích TFS hơn để quản lý quy trình / phát triển nhanh hơn ... Nó không hoàn hảo, nhưng nó tích hợp tốt vào Visual Studio.

Vì vậy, để giúp tôi quyết định giữa hai hệ thống này ...

Sự khác biệt lớn giữa TFVC và Git để kiểm soát nguồn khi sử dụng Visual Studio 2013 là gì?

  • Lợi ích duy nhất trong trường hợp của tôi có phải là kho lưu trữ cục bộ (không phải nói rằng nó không đáng kể) và hỗ trợ phát triển iOS?
  • Hạn chế duy nhất của Git là giao diện dòng lệnh (một số người cho rằng đó không phải là nhược điểm ;-P).
  • Bạn đã trải nghiệm trong Visual Studio 2013 GUI cho Git chưa? Điều đó có đủ để hỗ trợ phân nhánh / hợp nhất cơ bản mà không cần giao diện dòng lệnh không?
  • Có hướng dẫn khởi động chi tiết cho Git cho thấy Git đang được sử dụng với Visual Studio 2013 không? Microsoft có một video về tích hợp kho lưu trữ Git hiện có vào Visual Studio 2013, nhưng tôi đang tìm cách bắt đầu lại từ đầu với Git và VS 2013.

Tôi không tìm sách ở đây, mà chỉ là một vài gạch đầu dòng và có thể một số liên kết có liên quan từ những người đã sử dụng cả TFVC và Git.

Câu trả lời:


115

Sự khác biệt lớn giữa TFS và Git để kiểm soát nguồn khi sử dụng VS 2013 là gì?

MSDN có một trang rất rộng về tất cả các tính năng và sự khác biệt giữa Team Foundation Version Control và Git .

Lợi ích duy nhất trong trường hợp của tôi có phải là kho lưu trữ cục bộ (không nói là không đáng kể) và hỗ trợ phát triển IoS?

Không, còn nhiều thứ nữa, nhưng chúng thường là kịch bản nâng cao của Git. Repo cục bộ, hỗ trợ ngoại tuyến và toàn bộ tính trung thực cục bộ trên lịch sử là vô cùng mạnh mẽ, bạn sẽ có được điều đó ngay lập tức với Visual Studio. Có một số tính năng khác cũng tuyệt vời! Khả năng phân nhánh và hợp nhất từ ​​kho này sang kho khác rất mạnh mẽ. Tôi khuyên bạn nên tra cứu sách Pro Git để biết những điều đó. Git trong TFS chỉ là một máy chủ git khác, nó có khá nhiều tính năng mà Git tiêu chuẩn có.

Khả năng viết lại lịch sử trước khi hợp nhất cho phép bạn xóa hoặc kết hợp một số tập hợp thay đổi nhỏ hơn, để lịch sử rõ ràng hơn và dễ đọc hơn như một con người.

Hạn chế duy nhất của Git là giao diện dòng lệnh (một số người cho rằng đó không phải là nhược điểm ;-P).

TFVC cũng có một dòng lệnh, mọi người chỉ không sử dụng nó. Đối với những người muốn sử dụng Git và không bao giờ làm được nhiều hơn TFVC, có lẽ họ sẽ không thực sự cần rời khỏi giao diện người dùng, mặc dù họ sẽ không nhận được nhiều tính năng thú vị ...

Có thể có một vài nhược điểm khác, chủ yếu là do thực tế là nó khác với những gì mọi người đã quen. Không quá khó để tự bắn vào chân mình nếu bạn không dành thời gian để học những gì git làm khi bạn làm mọi việc. Những thứ như Rebase và Squash thực sự mạnh mẽ và tạo ra một lịch sử rất rõ ràng, nhưng nó có thể khiến mọi người gặp vấn đề rằng họ không thể hợp nhất được nữa nếu sử dụng không đúng cách. TFS có khả năng đặt một số cài đặt bảo mật để lấy đi quyền đưa ra các quyết định rất ngu ngốc trên kho lưu trữ git .

Một tiện ích bổ sung rất thú vị cho người dùng Git trên Windows là PoSHGit . nó cung cấp tính năng tự động hoàn thành lệnh trên dòng lệnh Powershell.

Bạn đã trải nghiệm trong VS 2013 GUI cho Git chưa? Điều đó có đủ để hỗ trợ phân nhánh / hợp nhất cơ bản mà không cần giao diện dòng lệnh không?

Nó có tất cả những gì bạn cần cho các hoạt động cơ bản. Nhưng bạn cần phải có khả năng hình dung các nhánh khác nhau để biết điều gì đang xảy ra. Vì máy chủ Git và kho lưu trữ cục bộ chỉ là Git, nên bất kỳ ứng dụng git nào cũng có thể giúp bạn tại đây. SourceTree là một tùy chọn ở đây. Ứng dụng khách Git cho Windows là một ứng dụng khác.

Đối với các hoạt động tiêu chuẩn, đăng ký, kiểm tra, hợp nhất, phân nhánh (hoặc đẩy, kéo, tìm nạp, cam kết, hợp nhất) giao diện người dùng hoạt động tốt.

Có hướng dẫn bắt đầu chi tiết cho Git cho thấy Git đang được sử dụng với VS 2013 không? MS có một video về việc tích hợp một kho Git hiện có vào VS 2013, nhưng tôi đang tìm kiếm bắt đầu lại từ đầu với Git và VS 2013?

Bắt đầu với Git có sẵn ở một số nơi ... Đây là một vài tùy chọn:

Các bài đọc hay khác:

Và một số công cụ đáng cài đặt:


3
ALM Rangers sẽ sớm phát hành hướng dẫn Git cho người dùng TFVC tại đây: vsarbranchingguide.codeplex.com/releases . Bản phát hành Beta hiện tại vẫn chưa có, tôi hy vọng nó sẽ giảm xuống với đợt tiếp theo :).
jessehouwing

8
Sau gần một năm kể từ bài đăng ban đầu của tôi, tôi nghĩ rằng tôi sẽ cho tất cả các bạn biết rằng chúng tôi đã sử dụng VS2013 với Git thành công. Yêu thích khả năng tạo nhiều kho lưu trữ trong một Dự án nhóm duy nhất. Chúng tôi đã gặp một số vấn đề khi hợp nhất. Trong một số trường hợp, tính năng tự động hợp nhất chọn không chính xác. Vì vậy, những gì trông giống như một hợp nhất thành công thực sự không phải. Bây giờ chúng tôi kiểm tra lại tất cả các tệp đã hợp nhất. Ngoài ra, có một số trường hợp nhất định khi hợp nhất cuộn cảm và gây ra lỗi trong giao diện người dùng VS (xung đột hợp nhất libgit2). Để khắc phục, chúng ta phải thả xuống dấu nhắc cmd và đưa ra lệnh kéo git (không vui).
Greg Grater

1
Tôi biết sắp có bản sửa lỗi cho lỗi cuối cùng đó như một phần của Bản cập nhật 4. Và có những trường hợp cài đặt cuối dòng khác nhau giữa các nhà phát triển có thể gây ra những sự cố này.
jessehouwing

5
Chúng tôi đã sử dụng VS 2013 w / Update 4 kể từ khi nó bị rơi cách đây vài tháng và nó dường như đã khắc phục tất cả các sự cố Git của chúng tôi từ GUI. Chúng tôi có thói quen thường xuyên kéo từ máy chủ từ xa giúp cập nhật kho lưu trữ cục bộ của chúng tôi. Ngoài ra, MS đã trải qua một số cập nhật tích cực cho bảng Product Backlog / Task vào cuối năm nay. Trực tiếp từ bảng, bây giờ bạn có thể chỉnh sửa mô tả, gán, đặt trạng thái và điều chỉnh mức độ ưu tiên / thứ tự của mục.
Greg Grater

1
Các liên kết "Git vs TFVC" đang liên kết đến "Bắt đầu sử dụng Git". Có nghĩa là bây giờ chúng ta nên sử dụng Git thay vì TFVC? ; D tìm thấy một liên kết mới: visualstudio.com/en-us/docs/tfvc/comparison-git-tfvc
Martin Schneider

17

Để làm rõ một số thuật ngữ hỗn hợp khó hiểu được sử dụng nhiều với TFS

Team Foundation Server (TFS) là một công cụ quản lý vòng đời ứng dụng, bao gồm thành phần hệ thống kiểm soát phiên bản nguồn (VCS) .

Thành phần VCSTFS sử dụng chủ yếu là Kiểm soát Phiên bản Nền tảng Nhóm (TFVC)

Vì vậy, câu hỏi sẽ là TFVC vs Git

(Trên thực tế, TFS hỗ trợ Git như một tùy chọn VCS .)

Vì vậy, câu hỏi là: TFVC vs Git

jessehouwing có một câu trả lời tuyệt vời đề cập đến vấn đề này rất chi tiết, vì vậy hãy tham khảo

Về việc chọn cái nào để sử dụng, theo ý kiến ​​của tôi, Git sẽ thắng

  1. Nó nhẹ: Dễ cài đặt và bắt đầu sử dụng.
  2. Bản chất phân tán của nó có nghĩa là nó rất kiên cường trước thiên tai, ai đó sẽ luôn có một bản sao của repo.
  3. Công việc ngoại tuyến rất đơn giản, bạn đang làm việc với kho lưu trữ đầy đủ của riêng mình. Bạn có thể xác nhận các thay đổi, hoàn nguyên, lịch sử duyệt web, v.v. Bạn chỉ cần trực tuyến khi muốn đồng bộ hóa với kho lưu trữ từ xa.
  4. Trong TFS, không có cách nào đơn giản để lưu trạng thái thay đổi của bạn (bổ sung, sửa đổi tệp, xóa tệp) và chuyển sang trạng thái mã khác. (Ví dụ: để làm việc trên hai tính năng và chuyển đổi qua lại). Trong git, bạn chỉ cần kiểm tra một nhánh khác.

1
TFS có các nhánh và bộ giá (cho phép # 5) và bạn thậm chí có thể định cấu hình các dự án của mình để sử dụng git nếu bạn thực sự muốn. TFS VCS cũng có một dòng lệnh cho #. Nó không nhẹ nhưng nó hoạt động tuyệt vời hơn rất nhiều so với git vì nó có quản lý dự án đầy đủ / theo dõi lỗi / theo dõi công việc / quản lý phát hành / quản lý bản dựng / chính sách đăng ký / thử nghiệm được tích hợp sẵn.
Matthew Whited

@MatthewWhited Chắc chắn là có thể, nhưng nó cực kỳ cồng kềnh so với git, do triển khai dựa trên thư mục so với triển khai dựa trên đồ thị của git. Lưu ý rằng tôi đã nói rằng không có simplecách nào để làm điều đó.
James Wierzba

@MatthewWhited Ngoài ra, tôi đồng ý về việc bổ sung công cụ vòng đời ứng dụng, nhưng tôi đang tìm câu trả lời của mình cho chỉ các giải pháp kiểm soát phiên bản mã nguồn.
James Wierzba

1
IDK ... Tôi thấy TFS khá đơn giản để sử dụng. Mặc dù tôi cũng không thích tất cả các nhánh do GIT tạo ra vì nó làm cho nó phức tạp hơn để đảm bảo mọi người đều là một mã giống nhau với tốc độ chạy nhanh một số trong khi chậm đối với một số khác.
Matthew Whited vào

Không biết. GIT đơn giản là quá phức tạp đối với nhiệm vụ mà nó hướng đến và rất không trực quan (tại sao nó là một yêu cầu kéo chứ không phải yêu cầu đẩy?!). Kiểm soát nguồn TF rất đơn giản và có thể được giải thích cho bất kỳ nhà phát triển mới nào trong nhóm của tôi trong vài phút. Tôi cũng thấy khuyến khích làm việc tại địa phương là một bất lợi lớn trong đội và thậm chí là cá nhân. Làm thế nào để bạn ngăn chặn mất công việc của mình trong Git mà không xả rác vào dự án với các chi nhánh? (Đối với điều này có các bộ giá trong TFS - TRÊN MÁY CHỦ)
Cesar

4

Hạn chế duy nhất của Git là giao diện dòng lệnh (một số người cho rằng đó không phải là nhược điểm ;-P).

Nếu bạn không thoải mái với giao diện dòng lệnh, có nhiều giao diện người dùng GUI cho Git. Bản thân Git thực sự chứa công cụ GUI của trình duyệt trong kho được gọi là gitkgit-gui- một GUI cho git. Sau đó, có các ứng dụng của bên thứ ba như git-cola , TortoiseGit và các ứng dụng khác .


2
Tất nhiên Visual Studio tự cung cấp GUI cho Git. Nhưng luôn có lúc bạn có thể muốn đi sâu vào dòng lệnh để làm những điều mà nếu không thì không thể. GUI hiển thị tất cả các lệnh Git cũng khó như dòng lệnh.
jessehouwing

Có các công cụ điện dòng lệnh. Ví dụ để loại bỏ hoàn toàn một nhánh khỏi sự tồn tại.
Engineer
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.