อะไรคือความแตกต่างที่สำคัญระหว่าง TFVC (TFS Version Control) และ Git สำหรับการควบคุมต้นทางเมื่อใช้ Visual Studio 2013


101

มีคำถามและคำตอบมากมายเกี่ยวกับ Git กับ TFVC Source Control แต่ไม่มีคำตอบในปัจจุบันที่ครอบคลุมถึงการรวม Git เข้ากับ Team Foundation Server / Service ที่ฉันสามารถหาได้

ฉันกำลังเริ่มการพัฒนาทุ่งหญ้าสีเขียวโดยใช้ภาษาที่หลากหลาย (C #, C ++, PHP, Javascript, MySSQL) โดยใช้ Visual Studio 2013 ในอนาคตจะมีการพัฒนา iOS บางอย่าง ฉันคุ้นเคยกับ SVN, VSS และ TFVC สำหรับการควบคุมแหล่งที่มาเป็นอย่างดี อย่างไรก็ตามฉันไม่เคยใช้ Git ฉันชอบ TFS สำหรับการจัดการกระบวนการ / การพัฒนาแบบคล่องตัว ... มันไม่สมบูรณ์แบบ แต่รวมเข้ากับ Visual Studio ได้ดี

ดังนั้นเพื่อช่วยฉันตัดสินใจระหว่างสองระบบนี้ ...

อะไรคือความแตกต่างใหญ่ระหว่าง TFVC และ Git สำหรับการควบคุมแหล่งที่มาเมื่อใช้ Visual Studio 2013

  • ประโยชน์เดียวในกรณีของฉันคือที่เก็บในเครื่อง (ไม่ได้บอกว่าไม่มีนัยสำคัญ) และการสนับสนุนการพัฒนา iOS หรือไม่
  • เป็นข้อเสียเปรียบเพียงประการเดียวของ Git อินเทอร์เฟซบรรทัดคำสั่ง (บางคนอาจโต้แย้งว่าไม่ใช่ข้อเสียเปรียบ ;-P)
  • คุณเคยมีประสบการณ์ใน Visual Studio 2013 GUI สำหรับ Git หรือไม่? เพียงพอที่จะรองรับการแตกกิ่ง / การรวมพื้นฐานโดยไม่ใช้อินเทอร์เฟซบรรทัดคำสั่งหรือไม่
  • มีคู่มือเริ่มต้นใช้งานโดยละเอียดสำหรับ Git ที่แสดงว่า Git ถูกใช้กับ Visual Studio 2013 หรือไม่ Microsoft มีวิดีโอสำหรับการรวมที่เก็บ Git ที่มีอยู่เข้ากับ Visual Studio 2013 แต่ฉันกำลังมองหาการเริ่มต้นใหม่ด้วย Git และ VS 2013

ฉันไม่ได้มองหาหนังสือที่นี่ แต่มีเพียงสัญลักษณ์แสดงหัวข้อย่อยและลิงก์ที่เกี่ยวข้องจากผู้ใช้ที่ใช้ทั้ง TFVC และ Git

คำตอบ:


115

อะไรคือความแตกต่างใหญ่ระหว่าง TFS และ Git สำหรับการควบคุมแหล่งที่มาเมื่อใช้ VS 2013

MSDN มีหน้าที่กว้างขวางมากในคุณสมบัติและความแตกต่างระหว่างทีมมูลฐานและการควบคุมเวอร์ชัน Git

ประโยชน์เดียวในกรณีของฉันคือที่เก็บในเครื่อง (ไม่ได้บอกว่าไม่มีนัยสำคัญ) และการสนับสนุนการพัฒนา IoS หรือไม่

ไม่มีอะไรอีกมากมาย แต่มักจะเป็นสถานการณ์ขั้นสูงของ Git Local Repo การสนับสนุนแบบออฟไลน์และความน่าเชื่อถือในท้องถิ่นเต็มรูปแบบในประวัติศาสตร์นั้นมีประสิทธิภาพอย่างไม่น่าเชื่อคุณทำสิ่งนั้นได้ทันทีด้วย Visual Studio ยังมีคุณสมบัติอื่น ๆ อีกเล็กน้อยที่ยอดเยี่ยมเช่นกัน! ความสามารถในการแตกแขนงและรวมจากที่เก็บหนึ่งไปยังอีกที่เก็บนั้นมีประสิทธิภาพมาก ฉันขอแนะนำให้คุณค้นหาหนังสือ Pro Gitสำหรับสิ่งเหล่านี้ Git ใน TFS เป็นเพียงเซิร์ฟเวอร์ git อีกตัวหนึ่ง แต่ก็มีคุณสมบัติทั้งหมดที่ Git มาตรฐานมีอยู่

ความสามารถในการเขียนประวัติใหม่ก่อนที่จะรวมช่วยให้คุณสามารถลบหรือรวมชุดการเปลี่ยนแปลงขนาดเล็กจำนวนมากเพื่อให้ประวัติศาสตร์สะอาดและอ่านง่ายขึ้นในฐานะมนุษย์

เป็นข้อเสียเปรียบเพียงประการเดียวของ Git อินเทอร์เฟซบรรทัดคำสั่ง (บางคนอาจโต้แย้งว่าไม่ใช่ข้อเสียเปรียบ ;-P)

TFVC มีบรรทัดคำสั่งด้วยผู้คนก็ไม่ได้ใช้มัน สำหรับคนที่ต้องการใช้ Git และไม่เคยทำอะไรมากไปกว่า TFVC พวกเขาอาจไม่จำเป็นต้องออกจาก UI จริงๆพวกเขาจะไม่ได้รับคุณสมบัติเจ๋ง ๆ มากมายแม้ว่า ...

อาจมีข้อบกพร่องอื่น ๆ เล็กน้อยส่วนใหญ่เกิดจากความจริงที่ว่ามันแตกต่างจากที่คนคุ้นเคย ไม่ยากเกินไปที่จะยิงตัวเองด้วยเท้าหากคุณไม่ใช้เวลาในการเรียนรู้ว่าคอมไพล์ทำอะไรเมื่อคุณทำสิ่งต่างๆ สิ่งต่างๆเช่น Rebase และ Squash นั้นทรงพลังมากและสร้างประวัติศาสตร์ที่ชัดเจนมาก แต่อาจทำให้ผู้คนมีปัญหาที่ไม่สามารถรวมเข้าด้วยกันได้อีกต่อไปหากใช้ไม่ถูกต้อง TFS มีความสามารถที่จะนำการตั้งค่าความปลอดภัยบางอย่างที่จะไปสิทธิในการตัดสินใจโง่มากในเก็บคอมไพล์

เย็นมาก Add-on สำหรับผู้ใช้ Git บน Windows เป็นPoSHGit มันให้คำสั่งเติมข้อความอัตโนมัติบนบรรทัดคำสั่ง Powershell

คุณเคยมีประสบการณ์ใน VS 2013 GUI สำหรับ Git หรือไม่? เพียงพอที่จะรองรับการแตกกิ่ง / การรวมพื้นฐานโดยไม่ใช้อินเตอร์เฟสบรรทัดคำสั่งหรือไม่

มีทุกสิ่งที่คุณต้องการสำหรับการใช้งานขั้นพื้นฐาน แต่คุณต้องสามารถเห็นภาพสาขาต่างๆเพื่อให้ทราบว่าเกิดอะไรขึ้น เนื่องจากเซิร์ฟเวอร์ Git และ repo ในเครื่องเป็นเพียง Git ไคลเอนต์ git ใด ๆ สามารถช่วยคุณได้ที่นี่ SourceTree เป็นตัวเลือกที่นี่ ไคลเอนต์ Git สำหรับ Windows เป็นอีกตัวหนึ่ง

สำหรับการดำเนินการมาตรฐานการเช็คอินเช็คเอาต์ผสานสาขา (หรือพุชดึงดึงคอมมิตผสาน) UI ทำงานได้ดี

มีคู่มือเริ่มต้นใช้งานโดยละเอียดสำหรับ Git ที่แสดงว่า Git ใช้กับ VS 2013 หรือไม่ MS มีวิดีโอสำหรับการรวม Git repo ที่มีอยู่เข้ากับ VS 2013 แต่ฉันกำลังมองหาการเริ่มต้นใหม่ด้วย Git และ VS 2013?

เริ่มต้นด้วย Git มีให้บริการในหลาย ๆ ที่ ... นี่คือตัวเลือกบางส่วน:

การอ่านที่ดีอื่น ๆ :

และเครื่องมือสองสามอย่างที่ควรค่าแก่การติดตั้ง:


3
ALM เรนเจอร์สในเร็ว ๆ นี้จะปล่อย Git สำหรับ TFVC ผู้ใช้คำแนะนำของพวกเขาที่นี่: vsarbranchingguide.codeplex.com/releases รุ่นเบต้าปัจจุบันยังไม่มีฉันคาดว่าจะลดลงในชุดถัดไป :)
jessehouwing

8
หลังจากเกือบหนึ่งปีนับตั้งแต่โพสต์ต้นฉบับของฉันฉันคิดว่าฉันจะบอกให้ทุกคนรู้ว่าเราใช้ VS2013 กับ Git สำเร็จแล้ว ชอบความสามารถในการสร้างที่เก็บข้อมูลหลายแห่งภายใต้โครงการทีมเดียว เรามีปัญหาเล็กน้อยในการรวมเข้าด้วยกัน ในหลายกรณีการผสานอัตโนมัติเลือกไม่ถูกต้อง ดังนั้นสิ่งที่ดูเหมือนว่าการผสานที่ประสบความสำเร็จนั้นไม่ใช่ ตอนนี้เราตรวจสอบไฟล์ที่ผสานทั้งหมดอีกครั้ง นอกจากนี้ยังมีบางกรณีที่การผสานโช้กและแสดงข้อผิดพลาดใน VS UI (ความขัดแย้งในการผสาน libgit2) ในการแก้ไขเราต้องไปที่พรอมต์ cmd และออก git pull (ไม่สนุก)
Greg Grater

1
ฉันรู้ว่ามีการแก้ไขสำหรับข้อผิดพลาดล่าสุดนั้นเป็นส่วนหนึ่งของอัปเดต 4 และมีบางกรณีที่การตั้งค่า end-line แตกต่างกันระหว่างนักพัฒนาที่อาจทำให้เกิดปัญหาเหล่านี้
jessehouwing

5
เราใช้ VS 2013 พร้อมอัปเดต 4 มาตั้งแต่ลดลงเมื่อหลายเดือนก่อนและดูเหมือนว่าจะได้รับการแก้ไขปัญหา Git ทั้งหมดของเราจาก GUI เรามีนิสัยชอบดึงข้อมูลจากเซิร์ฟเวอร์ระยะไกลเป็นประจำซึ่งช่วยให้ที่เก็บข้อมูลในเครื่องของเราทันสมัยอยู่เสมอ นอกจากนี้ MS ยังได้รับการอัปเดตเชิงบวกหลายอย่างสำหรับบอร์ด Backlog / Task ของผลิตภัณฑ์ในช่วงปลายปี จากกระดานโดยตรงตอนนี้คุณสามารถแก้ไขคำอธิบายกำหนดตั้งสถานะและปรับลำดับความสำคัญ / ลำดับของรายการได้
Greg Grater

1
ลิงก์ "Git vs TFVC" กำลังเชื่อมโยงกับ "เริ่มต้นใช้งาน Git" หมายความว่าตอนนี้เราควรใช้ Git มากกว่า TFVC แล้วหรือยัง? ; D พบลิงค์ใหม่: visualstudio.com/en-us/docs/tfvc/comparison-git-tfvc
Martin Schneider

17

เพื่อล้างคำศัพท์ผสมที่สับสนซึ่งใช้กันมากกับTFS

Team Foundation Server (TFS)เป็นเครื่องมือการจัดการวงจรชีวิตของแอปพลิเคชันซึ่งมีส่วนประกอบของระบบควบคุมเวอร์ชันต้นทาง(VCS)

VCSองค์ประกอบที่TFS ใช้เป็นหลักมูลฐานทีมควบคุมเวอร์ชัน (TFVC)

ดังนั้นคำถามจะเป็นTFVC vs Git

(อันที่จริงTFSรองรับGitเป็นตัวเลือกVCS )

ดังนั้นคำถามคือ: TFVC vs Git

jessehouwing มีคำตอบที่ดีซึ่งครอบคลุมรายละเอียดที่ดีดังนั้นโปรดอ้างอิง

เท่าที่เลือกใช้ในความคิดของฉันGitชนะ

  1. มีน้ำหนักเบา: ติดตั้งและเริ่มใช้งานได้ง่าย
  2. ลักษณะการกระจายหมายความว่ามีความยืดหยุ่นสูงต่อภัยพิบัติบางคนมักจะมีสำเนาของ repo
  3. งานออฟไลน์เป็นเรื่องง่ายคุณกำลังทำงานกับที่เก็บข้อมูลเต็มรูปแบบของคุณเอง คุณสามารถทำการเปลี่ยนแปลงย้อนกลับเรียกดูประวัติและอื่น ๆ ได้คุณจะต้องออนไลน์เมื่อต้องการซิงค์กับที่เก็บระยะไกลเท่านั้น
  4. ใน TFS ไม่มีวิธีง่ายๆในการบันทึกสถานะการเปลี่ยนแปลงของคุณ (การเพิ่มไฟล์การแก้ไขการลบไฟล์) และเปลี่ยนไปใช้สถานะอื่นของรหัส (ตัวอย่างเช่นในการทำงานกับสองคุณสมบัติและสลับไปมา) ในคอมไพล์คุณเพียงแค่ชำระเงินสาขาอื่น

1
TFS มีสาขาและชุดชั้นวาง (ซึ่งอนุญาตให้ # 5) และคุณยังสามารถกำหนดค่าโครงการของคุณให้ใช้คอมไพล์ได้หากคุณต้องการจริงๆ TFS VCS ยังมีบรรทัดคำสั่งสำหรับ # ไม่ได้มีน้ำหนักเบา แต่ทำนอกกรอบได้ดีกว่าคอมไพล์เนื่องจากมีการจัดการโครงการ / การติดตามข้อบกพร่อง / การติดตามงาน / การจัดการรุ่น / การจัดการการสร้าง / นโยบายการเช็คอิน / การทดสอบในตัว
Matthew Whited

@MatthewWhited แน่นอนว่าเป็นไปได้ แต่มันยุ่งยากมากเมื่อเทียบกับคอมไพล์เนื่องจากการใช้งานตามไดเร็กทอรีเทียบกับการใช้งานตามกราฟของคอมไพล์ โปรดทราบว่าฉันระบุว่าไม่มีsimpleวิธีใดทำได้
James Wierzba

@MatthewWhited นอกจากนี้ฉันเห็นด้วยกับการใช้เครื่องมือวงจรชีวิตของแอปพลิเคชันเพิ่มเติม แต่ฉันกำหนดคำตอบของฉันให้เป็นโซลูชันการควบคุมเวอร์ชันซอร์สโค้ดเท่านั้น
James Wierzba

1
IDK ... ฉันพบว่า TFS ค่อนข้างใช้งานง่าย แม้ว่าฉันจะไม่ชอบสาขาทั้งหมดที่สร้างโดย GIT เนื่องจากทำให้ซับซ้อนมากขึ้นเพื่อให้แน่ใจว่าทุกคนเป็นรหัสเดียวกันโดยมีการหมุนเร็วสำหรับบางคนในขณะที่คนอื่นช้า
Matthew Whited

ไม่รู้. GIT ซับซ้อนเกินไปสำหรับงานที่มุ่งหวังให้สำเร็จและไม่ใช้งานง่ายมาก (เหตุใดจึงเป็นคำขอดึงและไม่ผลักดันคำขอ!) การควบคุมแหล่งที่มา TF นั้นง่ายมากและสามารถอธิบายให้นักพัฒนารายใหม่ในทีมของฉันเข้าใจได้ภายในไม่กี่นาที ฉันยังเห็นว่าการส่งเสริมให้ทำงานในพื้นที่เป็นข้อเสียอย่างใหญ่หลวงในทีมและแม้แต่ทีละคน คุณจะป้องกันการสูญเสียงานใน Git ได้อย่างไรโดยไม่ทิ้งโครงการด้วยกิ่งไม้ (สำหรับสิ่งนี้มีชั้นวางใน TFS - บนเซิร์ฟเวอร์)
Cesar

4

เป็นข้อเสียเปรียบเพียงประการเดียวของ Git อินเทอร์เฟซบรรทัดคำสั่ง (บางคนอาจโต้แย้งว่าไม่ใช่ข้อเสียเปรียบ ;-P)

หากคุณไม่สบายใจกับอินเทอร์เฟซบรรทัดคำสั่งมีส่วนหน้า GUI หลายรายการสำหรับ Git Git เองมีเครื่องมือ GUI ของเบราว์เซอร์ที่เก็บที่เรียกว่าgitkและgit-gui- GUI สำหรับคอมไพล์ จากนั้นก็มีปพลิเคชันของบุคคลที่สามเช่นGit-Cola , TortoiseGitและคนอื่น ๆ


2
แน่นอนว่า Visual Studio มี GUI สำหรับ Git แต่มีหลายครั้งที่คุณอาจต้องการดำดิ่งลงไปใน commandline เพื่อทำสิ่งที่เป็นไปไม่ได้ GUI ที่แสดงคำสั่ง Git ทั้งหมดนั้นยากพอ ๆ กับ commandline
jessehouwing

มีเครื่องมือไฟฟ้าบรรทัดคำสั่ง ตัวอย่างเช่นการกำจัดสาขาออกจากการดำรงอยู่โดยสิ้นเชิง
วิศวกร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.