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

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

ฉันกำลังเริ่มการพัฒนาทุ่งหญ้าสีเขียวโดยใช้ภาษาที่หลากหลาย (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


person Greg Grater    schedule 20.11.2013    source แหล่งที่มา


คำตอบ (3)


อัปเดต

ตั้งแต่ปี 2013 มีเรื่องราวมากมายเกิดขึ้น:

  • Microsoft ได้เพิ่มการสนับสนุน ssh ให้กับ Team Foundation Server, Azure DevOps Server และ Azure DevOps
  • Visual Studio 2019 16.8+ มาพร้อมกับไคลเอนต์ git ที่ปรับปรุงใหม่ทั้งหมด
  • Microsoft ได้ย้ายผลิตภัณฑ์ภายในของตนเองออกจาก TFVC ขณะนี้แหล่งที่มาของ Windows และ Office อยู่ใน Git ใน Azure DevOps
  • Microsoft ได้ซื้อ GitHub ซึ่งปัจจุบันเป็นจุดสนใจหลักสำหรับข้อเสนอที่เกี่ยวข้องกับ DevOps ส่งผลให้หลายคนที่มีส่วนร่วมใน Azure DevOps ได้ย้ายไปที่ GitHub
  • Virtual File System สำหรับ Git & Git Large File System ได้แก้ไขสาเหตุหลายประการที่ทำให้ผู้คนยังใช้งาน TFVC ต่อไป
  • Azure DevOps มีเครื่องมือการย้ายข้อมูลในตัวซึ่งสามารถแปลง (ส่วนหนึ่งของ) ประวัติ TFVC ของคุณให้เป็น repo git

ตลอดเวลานี้เกิดขึ้นน้อยมากสำหรับ TFVC:

  • ไปป์ไลน์ YAML ยังไม่ได้รับการสนับสนุน TFVC 2 ปีหลังจากการแนะนำ (ฉันไม่ได้คาดหวังสิ่งเหล่านี้เลย)
  • ตอนนี้ Team Explorer ถูกเรียกว่า Legacy ใน Visual Studio
  • TFVC ได้รับการประกาศว่าฟีเจอร์เสร็จสมบูรณ์แล้ว
  • การสนับสนุน TFVC สำหรับ Eclipse และ Visual Studio Code และ Linux/Mac เลิกใช้แล้วอย่างเป็นทางการ/สิ้นสุดอายุการใช้งาน

ค่อนข้างชัดเจนว่าใครเป็นผู้ชนะ: Git


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

MSDN มี หน้าที่กว้างขวางมากเกี่ยวกับคุณลักษณะทั้งหมดและความแตกต่างระหว่าง Team Foundation Version Control และ Git

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

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

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

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

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

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

ส่วนเสริมที่ยอดเยี่ยมสำหรับผู้ใช้ 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 มีให้บริการในหลายที่... นี่คือตัวเลือกบางส่วน:

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

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

person jessehouwing    schedule 21.11.2013
comment
ALM Rangers จะเผยแพร่คำแนะนำผู้ใช้ Git สำหรับผู้ใช้ TFVC ที่นี่: vsarbranchingguide.codeplex.com/releases รุ่นเบต้าปัจจุบันยังไม่มี ฉันคาดว่าจะออกพร้อมกับชุดถัดไป :) - person jessehouwing; 07.05.2014
comment
หลังจากผ่านไปเกือบหนึ่งปีนับตั้งแต่โพสต์ดั้งเดิมของฉัน ฉันคิดว่าฉันจะแจ้งให้ทุกคนทราบว่าเราใช้ VS2013 กับ Git สำเร็จแล้ว ชอบความสามารถในการสร้างพื้นที่เก็บข้อมูลหลายแห่งภายใต้โครงการทีมเดียว เราประสบปัญหาเล็กน้อยในการรวมเข้าด้วยกัน ในหลายกรณี การรวมอัตโนมัติเลือกไม่ถูกต้อง ดังนั้นสิ่งที่ดูเหมือนการผสานที่ประสบความสำเร็จกลับไม่เป็นเช่นนั้น ตอนนี้เราตรวจสอบไฟล์ที่รวมทั้งหมดอีกครั้งแล้ว นอกจากนี้ ยังมีบางกรณีที่การผสานทำให้เกิดข้อผิดพลาดและเกิดข้อผิดพลาดใน VS UI (ข้อขัดแย้งในการผสาน libgit2) ในการแก้ไข เราต้องไปที่พรอมต์ cmd และออก git pull (ไม่สนุก) - person Greg Grater; 06.11.2014
comment
ฉันรู้ว่าจะมีการแก้ไขสำหรับข้อผิดพลาดครั้งล่าสุดซึ่งเป็นส่วนหนึ่งของการอัปเดต 4 และมีหลายกรณีที่การตั้งค่าจุดสิ้นสุดระหว่างนักพัฒนาต่างกันจนอาจทำให้เกิดปัญหาเหล่านี้ได้ - person jessehouwing; 06.11.2014
comment
เราใช้ VS 2013 พร้อมอัปเดต 4 มาตั้งแต่ที่มันลดลงเมื่อหลายเดือนก่อน และดูเหมือนว่าจะแก้ไขปัญหา Git ทั้งหมดของเราจาก GUI แล้ว เรามีนิสัยชอบดึงข้อมูลจากเซิร์ฟเวอร์ระยะไกลเป็นประจำ ซึ่งช่วยให้ที่เก็บข้อมูลในเครื่องของเราอัปเดตอยู่เสมอ นอกจากนี้ MS ยังได้รับการอัปเดตเชิงบวกหลายประการใน Product Backlog / Task boards ในช่วงหลังๆ นี้ โดยตรงจากบอร์ด ตอนนี้คุณสามารถแก้ไขคำอธิบาย กำหนด ตั้งค่าสถานะ และปรับลำดับความสำคัญ/ลำดับของรายการได้ - person Greg Grater; 19.03.2015
comment
ลิงก์ Git กับ TFVC เชื่อมโยงกับการเริ่มต้นใช้งาน Git หมายความว่าตอนนี้เราควรใช้ Git บน TFVC ดีกว่าหรือไม่ ;D พบลิงก์ใหม่: visualstudio.com/en-us /docs/tfvc/comparison-git-tfvc - person Martin Schneider; 05.07.2016
comment
4 ปีต่อมาและฉันยังคงดำเนินการกับโพสต์นี้ ใช้ VS 2015 กับ VSTS และ Git source control มาระยะหนึ่งแล้ว การดำเนินการทั่วไปส่วนใหญ่ได้รับการสนับสนุนโดยตรงผ่าน VS 2015 IDE โดยไม่จำเป็นต้องใช้เครื่องมือภายนอกหรือการสนับสนุนบรรทัดคำสั่งเพียงเล็กน้อย การสนับสนุนบรรทัดคำสั่งเล็กๆ น้อยๆ ที่จำเป็นนั้นได้รับการบันทึกไว้อย่างดีจากชุมชนและสามารถค้นหาใน Google ได้อย่างง่ายดาย อินเทอร์เฟซ VSTS Agile/Scrum เหมาะอย่างยิ่งสำหรับการติดตามงานและผสานรวมกับ VS 2015, การควบคุมแหล่งที่มา Git และการจัดการ Release ได้อย่างราบรื่น การฝึกอบรมออนไลน์ที่ยอดเยี่ยมมากมายเกี่ยวกับเรื่องนี้ใน PluralSight - person Greg Grater; 02.02.2017
comment
เซิร์ฟเวอร์ git เวอร์ชันใดที่เซิร์ฟเวอร์ TFS @jessehouwing ใช้ - person Ram; 17.03.2017
comment
@ram มันใช้การใช้งานโปรโตคอลของตัวเองโดยอิงจาก libgit2 พร้อมที่เก็บข้อมูลในเซิร์ฟเวอร์ SQL - person jessehouwing; 17.03.2017

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

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

องค์ประกอบ VCS ที่ TFS ใช้ ส่วนใหญ่เป็น Team Foundation Version Control (TFVC)

ดังนั้น คำถามก็คือ TFVC กับ Git

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

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

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

ในการเลือกว่าจะใช้อันไหน ในความคิดของฉัน Git ชนะ

  1. มันมีน้ำหนักเบา: ง่ายต่อการติดตั้งและเริ่มใช้งาน
  2. ลักษณะแบบกระจายหมายความว่าทนทานต่อภัยพิบัติได้มาก โดยจะมีสำเนาของ repo อยู่เสมอ
  3. งานออฟไลน์นั้นง่ายมาก คุณกำลังทำงานกับพื้นที่เก็บข้อมูลเต็มรูปแบบของคุณเอง คุณสามารถยอมรับการเปลี่ยนแปลง ย้อนกลับ ประวัติการเรียกดู ฯลฯ คุณจะต้องออนไลน์เมื่อคุณต้องการซิงค์กับพื้นที่เก็บข้อมูลระยะไกลเท่านั้น
  4. ใน TFS ไม่มีวิธีง่ายๆ ในการบันทึกสถานะของการเปลี่ยนแปลงของคุณ (การเพิ่มไฟล์ การแก้ไข การลบไฟล์) และสลับไปยังโค้ดสถานะอื่น (เช่น การทำงานสองคุณสมบัติและสลับไปมา) ใน git คุณเพียงแค่ชำระเงินสาขาอื่น
person James Wierzba    schedule 27.11.2017
comment
TFS มีสาขาและชุดชั้นวาง (ซึ่งอนุญาตให้มี #5) และคุณยังสามารถกำหนดค่าโครงการของคุณให้ใช้ git ได้หากต้องการ TFS VCS ยังมีบรรทัดคำสั่งสำหรับ # มันไม่ได้มีน้ำหนักเบา แต่ทำอะไรได้มากกว่า git มาก เนื่องจากมีการจัดการโครงการเต็มรูปแบบ / การติดตามข้อบกพร่อง / การติดตามงาน / การจัดการการเผยแพร่ / การจัดการการสร้าง / นโยบายการเช็คอิน / การทดสอบในตัว - person Matthew Whited; 23.07.2018
comment
@MatthewWhited แน่นอนว่าเป็นไปได้ แต่มันยุ่งยากมากเมื่อเทียบกับ git เนื่องจากเป็นการใช้งานแบบไดเร็กทอรีเทียบกับการใช้งานแบบกราฟของ git โปรดทราบว่าฉันระบุว่าไม่มี simple วิธีที่จะทำ - person James Wierzba; 23.07.2018
comment
@MatthewWhited นอกจากนี้ฉันเห็นด้วยกับเครื่องมือวงจรการใช้งานแอปพลิเคชันเพิ่มเติม แต่ฉันกำลังกำหนดขอบเขตคำตอบของฉันสำหรับโซลูชันการควบคุมเวอร์ชันซอร์สโค้ดเท่านั้น - person James Wierzba; 23.07.2018
comment
IDK... ฉันพบว่า TFS ใช้งานได้ค่อนข้างง่าย แม้ว่าฉันจะไม่ชอบสาขาทั้งหมดที่สร้างโดย GIT เพราะมันทำให้ซับซ้อนมากขึ้นเพื่อให้แน่ใจว่าทุกคนเป็นรหัสเดียวกันโดยมีการปั่นเร็วสำหรับบางคนในขณะที่ช้าสำหรับคนอื่นๆ - person Matthew Whited; 23.07.2018
comment
ไม่รู้. GIT นั้นซับซ้อนเกินไปสำหรับงานที่มุ่งหวังให้สำเร็จและใช้งานไม่ได้ง่ายนัก (เหตุใดจึงเป็นคำขอแบบดึงและไม่ใช่คำขอแบบพุช!) การควบคุมแหล่งที่มาของ TF นั้นง่ายมาก และสามารถอธิบายให้กับนักพัฒนารายใหม่ในทีมของฉันได้ภายในไม่กี่นาที ฉันยังเห็นว่าการสนับสนุนการทำงานในท้องถิ่นถือเป็นข้อเสียเปรียบอย่างมากภายในทีมและแม้แต่รายบุคคลด้วย คุณจะป้องกันการสูญเสียงานใน Git โดยไม่ทิ้งขยะให้กับโปรเจ็กต์ได้อย่างไร (สำหรับสิ่งนี้มีชั้นวางใน TFS - บนเซิร์ฟเวอร์) - person Cesar; 17.07.2020
comment
นักพัฒนากำลังขอให้ดึงการเปลี่ยนแปลงของพวกเขาไปที่สาขาหลัก แต่คุณสามารถคิดได้ง่ายๆ ในแง่ของนักพัฒนาที่ขอให้ผลักดันการเปลี่ยนแปลงของพวกเขาไปยังสาขาหลัก - person James Wierzba; 18.07.2020

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

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

person kralyk    schedule 18.05.2014
comment
แน่นอนว่า Visual Studio เองก็มี GUI สำหรับ Git แต่มีหลายครั้งที่คุณอาจต้องการดำดิ่งสู่ Commandline เพื่อทำสิ่งที่เป็นไปไม่ได้ GUI ที่แสดงคำสั่ง Git ทั้งหมดนั้นยากพอๆ กับบรรทัดคำสั่ง - person jessehouwing; 21.05.2014
comment
มีเครื่องมือไฟฟ้าบรรทัดคำสั่ง เช่น กำจัดสาขาหนึ่งออกไปจากการดำรงอยู่โดยสิ้นเชิง - person Engineer; 09.04.2019