ใช้ Git กับ Visual Studio [ปิด]


1455

ในฐานะผู้ใช้Visual SourceSafeเป็นเวลานาน(และผู้เกลียดชัง) ฉันกำลังพูดถึงการเปลี่ยนไปใช้SVNกับเพื่อนร่วมงาน เขาแนะนำให้ใช้Gitแทน เนื่องจากเห็นได้ชัดว่ามันสามารถใช้เป็นเพียร์ทูเพียร์โดยไม่มีเซิร์ฟเวอร์กลาง (เราเป็นทีมนักพัฒนา 3 คน)

ฉันไม่สามารถค้นหาเครื่องมือใด ๆ ที่รวม Git กับ Visual Studio ได้ - สิ่งนั้นมีอยู่จริงหรือไม่?

มีเทคโนโลยีใดบ้างสำหรับการใช้ Git กับ Visual Studio และฉันต้องรู้อะไรเกี่ยวกับความแตกต่างก่อนที่จะเริ่ม?


4
ฉันเพิ่งเพิ่ม Git Source Control Provider สำหรับ VS 2010 ดังนั้นจึงยังใช้งานได้
Wade73

3
ชำระเงินนี้กวดวิชาจากทีมงาน VS การปรับปรุงต่อไป อัปเดต 2 สำหรับ VS 2012 กำลังมาทุกวันแล้ว นอกจากนี้คุณยังสามารถดาวน์โหลดตัวอย่างเทคโนโลยีของชุมชน (CTP) สำหรับ VS2012 จากที่นี่ หรือถ้าคุณเป็น CMMI, เปรียว, การต่อสู้ 1/2 ฯลฯ คุณสามารถลงทะเบียนสำหรับบัญชีฟรี (ทั้งภาครัฐหรือเอกชนกรณีเมฆ) และเชิญสมาชิก (เพื่อนร่วมทีมของลูกค้า) กับโครงการ ur บน web-based TFS tfs.visualstudio com
Annie

3
ฉันใช้ Visual Studio และคอมไพล์มาสองปีแล้ว ฉันจะบอกว่าทางออกที่ดีที่สุดสำหรับปัญหานี้คือการใช้แอปพลิเคชันการควบคุมแหล่งข้อมูลแยกต่างหากเช่น Atlassians SourceTree ฟรีติดตั้งง่ายมี GUI ที่ดีและใช้งานง่ายคุณสามารถเรียกดูที่เก็บหลายแห่ง (เช่นโครงการที่แตกต่างกัน) เช่นเดียวกับที่คุณท่องเว็บใน Chrome และที่สำคัญที่สุดคือสนับสนุนระบบควบคุมหลายแหล่ง ให้มันลอง! คุณจะไม่ผิดหวังฉันรับรองคุณ!
Fazi

2
Git ได้รับการสนับสนุนโดยเริ่มต้นจาก Visual Studio 2013
rustyx

17
ฉันชอบที่ผู้คนกว่า 1,342 คนได้อัปเดตคำถามนี้และคนงี่เง่าบางคนมาและปิดมันต่อไป StackOverfolow กำลังดี .... มันจะสำคัญอย่างไรถ้าไม่ตรงกับเกณฑ์ของ SO หากมีคนจำนวนมากพบว่ามันมีประโยชน์มาก จุดประสงค์ของเว็บไซต์นี้ไม่เป็นประโยชน์หรือไม่
thebunnyrules

คำตอบ:


1070

ในเดือนมกราคม 2013 Microsoft ประกาศว่าพวกเขากำลังเพิ่มการสนับสนุน Git อย่างเต็มรูปแบบลงในผลิตภัณฑ์ ALM ทั้งหมด พวกเขาได้เผยแพร่ปลั๊กอินสำหรับ Visual Studio 2012 ที่เพิ่มการรวมแหล่งควบคุม Git

อีกวิธีหนึ่งคือมีโครงการที่เรียกว่าGit Extensionsซึ่งรวมถึง Add-in สำหรับ Visual Studio 2005, 2008, 2010 และ 2012 รวมถึง Windows Explorer อัปเดตเป็นประจำและมีการใช้งานในสองโครงการฉันพบว่ามีประโยชน์มาก

ตัวเลือกหนึ่งคือผู้ให้บริการ Git ควบคุมแหล่งที่มา


9
ted.dennison: ตามหน้านี้ ( code.google.com/p/gitextensions ) มันเป็นปลั๊กอิน VS 2005/2008
Jonas

10
เพื่อแก้ไขตัวเอง - แหล่งที่โฮสต์บน Github, MSIs ไม่ได้
Chris S

5
ฉันได้ติดตั้งส่วนขยาย git แล้วมันใช้งานได้ "โดย" visual studio และไม่ได้รวมเข้าด้วยกัน มีวิธีแก้ไขปัญหาที่ช่วยให้สามารถเช็คอิน - เช็คเอาต์จาก Solution Explorer ได้หรือไม่
Dani

4
Dani คนกำลังทำงานกับผู้ให้บริการแหล่งควบคุม Git สำหรับ VS ที่ดูเหมือนว่าจะให้การรวมระดับที่ลึกกว่าเล็กน้อย: gitscc.codeplex.com
Jon Rimmer

3
มีตัวเลือกสำหรับ VS 2012 หรือไม่?
Earth Engine

202

ฉันใช้ Git กับ Visual Studio สำหรับพอร์ตของบัฟเฟอร์โปรโตคอลถึง C # ฉันไม่ได้ใช้ GUI - ฉันแค่เปิดบรรทัดคำสั่งรวมถึง Visual Studio

ส่วนใหญ่เป็นเรื่องปกติ - ปัญหาเดียวคือเมื่อคุณต้องการเปลี่ยนชื่อไฟล์ ทั้งสอง Git และ Visual Studio จะมากกว่าที่พวกเขาเป็นหนึ่งในการเปลี่ยนชื่อ ฉันคิดว่าการเปลี่ยนชื่อใน Visual Studio เป็นวิธีที่ควรทำ - แค่ระวังสิ่งที่คุณทำที่ Git ในภายหลัง ถึงแม้ว่าสิ่งนี้จะเป็นความเจ็บปวดเล็กน้อยในอดีต แต่ฉันได้ยินมาว่าจริง ๆ แล้วมันน่าจะราบรื่นในด้าน Git เพราะสามารถสังเกตได้ว่าเนื้อหาส่วนใหญ่จะเหมือนกัน (ไม่เหมือนกันทั้งหมดโดยปกติ - คุณมักจะเปลี่ยนชื่อไฟล์เมื่อคุณเปลี่ยนชื่อคลาส IME)

แต่โดยทั่วไป - ใช่มันใช้งานได้ดี ฉันเป็นมือใหม่ Git แต่ฉันสามารถทำมันได้ทุกอย่างที่ต้องการ ตรวจสอบให้แน่ใจว่าคุณมีไฟล์ละเว้นคอมไพล์สำหรับ bin และ obj และ * .user


35
git ควรใช้ได้กับ VS ที่ทำการเปลี่ยนชื่อ สำหรับการเปลี่ยนชื่อที่ดีในการบันทึก git คุณเพียงแค่ต้องแน่ใจว่าคุณทำขั้นตอนส่วน 'ลบ' ของการเปลี่ยนแปลงในการกระทำเช่นเดียวกับส่วน 'เพิ่ม' git add -A ทำให้เป็นเรื่องง่ายถ้า. gitignore ของคุณเป็นรุ่นล่าสุด
CB Bailey

40
ฉันเป็นมือใหม่และอยากจะบอกความจริงกับฉันว่าฉันชอบที่จะใช้มันจากบรรทัดคำสั่ง ฉันค่อนข้างกลัวที่จะจัดการกับคอมไพล์ GUI ที่พยายามที่จะ "ฉลาด" และทำ "เวทมนต์" ไว้ด้านหลังของฉัน
hasen

1
ขอบคุณสำหรับคำแนะนำ. ฉันเพิ่งย้ายไปคอมไพล์ (และ gitub) และจะไม่มองย้อนกลับไป ลูกค้าของฉันใช้ perforce (ugh!) ดังนั้นแผนของฉันคือการชำระเงินหนึ่งครั้งจากการบังคับใช้งานของฉันกับคอมไพล์แล้วตรวจสอบอีกครั้ง
Mark Beckwith

7
@CallMeLaNN: คุณมีข้อสันนิษฐานมากมายเกี่ยวกับมือใหม่ที่ Git มีปัญหาเมื่อใช้บรรทัดคำสั่ง ดูความคิดเห็นของ Hasan j ตั้งแต่เดือนเมษายน 2009
Jon Skeet

ฉันมักจะเพิ่ม. user, *. suo, bin, obj, และ _ * ไปยังรายการที่ไม่ใช้ของฉัน ... หากมีสิ่งใดสิ่งหนึ่งที่ฉันต้องการเพิ่มฉันยังคงสามารถเพิ่มได้ด้วยตนเอง
Tracker1

93

Git Source Control Providerเป็นปลั๊กอินใหม่ที่รวม Git เข้ากับ Visual Studio


มีโอกาสที่จะทำให้มันทำงานในปี 2005 หรือไม่?
ศิลปะ

3
ดี. TBH ส่วนต่อประสานกราฟิกของสิ่งนี้เป็นสิ่งที่ฉันกำลังมองหาเมื่อฉันค้นหา GUI สำหรับคอมไพล์ภายใน VS 2010 ขอบคุณที่โพสต์สิ่งนี้ คำตอบอื่น ๆ ไม่ใช่สิ่งที่ฉันต้องการ พวกเขายากจนเมื่อเปรียบเทียบกับ VisualSVN
JDPeckham

1
ฉันขอแนะนำให้ดูส่วนการตรวจสอบในarket.visualstudio.com/ก่อนที่จะตัดสินใจติดตั้ง
QMaster

53

ฉันดูที่ทำงานนี้เล็กน้อย (ทั้งกับการโค่นล้มและ Git) Visual Studio มี API รวมการควบคุมแหล่งที่มาเพื่อให้คุณสามารถรวมโซลูชันการควบคุมแหล่งข้อมูลบุคคลที่สามเข้ากับ Visual Studio อย่างไรก็ตามคนส่วนใหญ่ไม่ได้ใส่ใจกับมันด้วยเหตุผลสองประการ

อย่างแรกคือ API ค่อนข้างจะถือว่าคุณใช้เวิร์กโฟลว์การเช็คเอาต์ที่ถูกล็อค มีตะขอจำนวนมากอยู่ในนั้นซึ่งมีราคาแพงในการติดตั้งหรืออาจไม่เหมาะสมเมื่อคุณใช้เวิร์กโฟลว์การผสานการแก้ไขที่ทันสมัยกว่า

อย่างที่สอง (ซึ่งเกี่ยวข้อง) คือเมื่อคุณใช้เวิร์กโฟลว์การแก้ไขแบบผสานที่ทั้งการโค่นล้มและ Git สนับสนุนคุณไม่จำเป็นต้องรวม Visual Studio เข้าด้วยกันจริงๆ สิ่งที่นักฆ่าหลักเกี่ยวกับการรวมเข้าด้วยกันของ SourceSafe กับ Visual Studio คือคุณ (และผู้แก้ไข) สามารถบอกได้อย่างรวดเร็วว่าคุณเป็นเจ้าของไฟล์ใดซึ่งต้องตรวจสอบก่อนที่คุณจะสามารถแก้ไขได้และคุณไม่สามารถเช็คเอาท์ จากนั้นมันจะช่วยให้คุณทำสิ่งที่ขึ้นกับการควบคุมการแก้ไขสิ่งที่คุณต้องทำเมื่อคุณต้องการแก้ไขไฟล์ ไม่มีสิ่งใดแม้แต่ส่วนหนึ่งของเวิร์กโฟลว์ Git ทั่วไป

เมื่อคุณใช้ Git (หรือ SVN โดยทั่วไป) การโต้ตอบการควบคุมการแก้ไขของคุณจะเกิดขึ้นก่อนเซสชันการพัฒนาของคุณหรือหลังจากนั้น (เมื่อคุณมีทุกอย่างที่ทำงานและทดสอบแล้ว) ณ จุดนี้มันเจ็บปวดไม่มากนักที่จะใช้เครื่องมือที่แตกต่าง คุณไม่จำเป็นต้องสลับไปมา


22
พวกคุณไม่เคยย้ายหรือเปลี่ยนชื่อไฟล์ / ไดเรกทอรี? ฉันเริ่มใช้ VisualSVN เมื่อสองสามเดือนที่ผ่านมาและฉันไม่สามารถย้อนกลับไป
JohnOpincar

10
@TED ​​สำหรับฉันนี่หมายถึงว่าหลังจากการพัฒนาที่ยาวนานคุณต้องจำเหตุผลของการเปลี่ยนแปลงทุกไฟล์จนกว่าคุณจะเช็คอินถ้าฉันกำลังทำงานบางอย่างและเห็นบางสิ่งที่จำเป็นต้องแก้ไขในพื้นที่ที่ไม่เกี่ยวข้องฉันชอบที่จะตรวจสอบ แก้ไขและเช็คอินโดยรู้ว่าฉันสามารถกำจัดการเปลี่ยนแปลงนั้นจากความทรงจำของฉันได้ ฉันควรทำสิ่งนี้จากภายใน VS
Peter M

4
ปลั๊กอิน Visual Studio Git ส่วนต่อขยายไม่พยายามใส่ตัวเองเข้าไปในโรงเรียนเก่า API แหล่งควบคุมการชำระเงินที่ล็อกไว้ซึ่ง Microsoft ได้ให้ไว้ มันเหมาะอย่างยิ่งกับเวิร์กโฟลว์การแก้ไขผสานและโดยทั่วไปเพียงเพิ่มการคอมมิต / พุช / ดึงและประวัติไฟล์ใน IDE มีประวัติไฟล์ในเมนูบริบทมีประโยชน์มาก!
Jacob Stanley

3
ฉันไม่เห็นด้วยส่วนใหญ่เพราะต้องออกไปจากสตูดิโอภาพเพื่อเช็คอินกระตุ้นเวลาระหว่างเช็คอิน มีคนเช็คเอาต์จำนวนมากเกินไปในช่วงเริ่มต้นของวันและไม่ได้เช็คอินจนกว่าจะสิ้นสุด (หรือวันที่แย่กว่านั้น) การรวมเข้ากับ Visual Studio ช่วยให้คุณสามารถควบคุมแหล่งที่มาในเวิร์กโฟลว์ของคุณได้
Chris McGrath

8
การรวมการควบคุมแหล่งที่มาของ Visual Studio ตั้งแต่ VS2005 (VS2003?) ไม่ได้มีรูปแบบการเช็คเอาต์เป็นพิเศษ ดู AnkhSVN เช่น ฉันชอบการรวม VS เพราะเปลี่ยนชื่อแล้วก็เรียบกว่า
Roger Lipscombe

38

ฉันพบว่า Git ทำงานบนต้นไม้ทั้งหมดเหมือนที่เป็นอยู่ประโยชน์จากการรวม IDE น้อยกว่าเครื่องมือควบคุมแหล่งที่มาซึ่งเป็นไฟล์ที่ใช้หรือเป็นไปตามรูปแบบการชำระเงินแก้ไขการมอบหมาย แน่นอนว่ามีหลายครั้งที่การคลิกปุ่มเพื่อทำการตรวจสอบประวัติเป็นเรื่องที่ดี แต่ฉันไม่ควรพลาดมาก

สิ่งที่ต้องทำจริง ๆ คือการรับไฟล์. gitignore ของคุณซึ่งเต็มไปด้วยสิ่งต่าง ๆ ที่ไม่ควรอยู่ในที่เก็บข้อมูลที่แชร์ โดยทั่วไปแล้วฉันมี (ในหมู่สิ่งอื่น ๆ ) ดังต่อไปนี้:

*.vcproj.*.user
*.ncb
*.aps
*.suo

แต่นี่จะเป็นภาษา C ++ อย่างมากโดยมีการใช้ฟังก์ชันตัวช่วยสร้างคลาสน้อยหรือไม่มีเลย

รูปแบบการใช้งานของฉันเป็นดังนี้:

  1. รหัสรหัสรหัสใน Visual Studio

  2. เมื่อมีความสุข (จุดกึ่งกลางที่สมเหตุสมผลในการส่งรหัสให้เปลี่ยนเป็น Git เปลี่ยนสถานะและตรวจสอบความแตกต่างถ้ามีอะไรผิดปกติอย่างเห็นได้ชัดสลับกลับไปที่ Visual Studio และแก้ไขมิฉะนั้นให้ยอมรับ

การผสานสาขาการรีบูทหรือสิ่งที่น่าสนใจอื่น ๆ ของ SCM นั้นทำได้ง่ายใน Git จากพรอมต์คำสั่ง ปกติแล้ว Visual Studio จะค่อนข้างมีความสุขกับสิ่งต่าง ๆ ที่เปลี่ยนแปลงภายใต้แม้ว่าบางครั้งอาจจำเป็นต้องโหลดซ้ำบางโครงการหากคุณแก้ไขไฟล์โครงการอย่างมีนัยสำคัญ

ฉันพบว่าประโยชน์ของ Git นั้นเหนือกว่าความไม่สะดวกเล็กน้อยที่ไม่ได้มีการรวม IDE แบบเต็ม แต่ก็เป็นเรื่องของรสนิยมด้วย


11
คุณทำไม่ได้แน่นอนคุณควรมีไฟล์โครงการภายใต้การควบคุมเวอร์ชัน
CB Bailey

1
นี้เป็นสิ่งสำคัญมาก - การกู้คืนจากการลืมที่จะรวมถึงบางสิ่งบางอย่างใน .gitignore เมื่อคุณได้เริ่มต้นการกระทำและแตกแขนงเป็นความเจ็บปวดที่จะพูดน้อย ...
Benjol

3
@Benjol: มันไม่ควรเจ็บปวดขนาดนั้น คุณเพียงแค่ต้องgit rm <file>และecho <file> >>.gitignore; git add .gitignoreเคล็ดลับของสาขาที่ใช้งานอยู่ของคุณ เมื่อคุณยืนยันการเปลี่ยนแปลงแล้วคุณสามารถเลือกรับการแก้ไขไปยังสาขาอื่นได้เสมอ
CB Bailey

1
@Charles Bailey ดูการผจญภัยของฉันในคำถามนี้: stackoverflow.com/questions/1887049/…
Benjol

9
@Mike Brown: เขาเพิกเฉยไฟล์ * .user ซึ่งเป็นการตั้งค่าเฉพาะสำหรับผู้ใช้
Srdjan Jovcic

31

Microsoft ประกาศGit สำหรับ Visual Studio 2012 (อัพเดต 2) เมื่อเร็ว ๆ นี้ ฉันยังไม่ได้เล่น แต่วิดีโอนี้ดูมีแนวโน้ม

นี่คือการสอนด่วนเกี่ยวกับวิธีใช้ Git จาก Visual Studio 2012


ฉันแนะนำอันนี้เพราะมันเป็นผลิตภัณฑ์อย่างเป็นทางการของ Microsoft และมันสามารถติดตั้งบน VS 2012 express และ
Cheung

28

อย่าพลาด TortoiseGit ... https://tortoisegit.org/


ใช่นี่เป็น UI ที่ดี แต่ไม่ใช่มันไม่ได้รวมเข้ากับ Visual Studio
Scott Rippey

3
Git Source Control Provider เพิ่มคำสั่ง TortoiseGit ให้กับเมนูบริบทใน Visual Studio
HotN

26

มีเครื่องมือ Visual Studio สำหรับ Gitโดย Microsoft รองรับเฉพาะ Visual Studio 2012 (อัพเดต 2) เท่านั้น


สำหรับ visual studio 2012 นี่คือคำตอบที่ดีที่สุด ดูเหมือนว่าพวกเขาใช้ความพยายามอย่างมากในการนำไปใช้และจากประสบการณ์ของฉันมันทำงานได้อย่างที่คาดไว้!
RoelF

2
ฉันไม่สามารถหาวิธีกำหนดค่า "เครื่องมือ Studio Visual สำหรับ Git" โดย Microsoft เพื่อใช้ repo Github ส่วนตัว คุณเคยเห็นเอกสารหรือแบบฝึกหัดเกี่ยวกับเรื่องนี้บ้างไหม?
golliher

ฉันขอแนะนำให้ดูส่วนการตรวจสอบในarket.visualstudio.com/ก่อนที่จะตัดสินใจติดตั้ง
QMaster

19

Visual Studio 2013 สนับสนุน Git เป็นอย่างดี

ดูประกาศอย่างเป็นทางการ


18

การสนับสนุน Git ที่ทำโดย Microsoft ใน Visual Studio นั้นดีพอสำหรับการทำงานขั้นพื้นฐาน (ส่ง / ดึงข้อมูล / ผสานและกด) คำแนะนำของฉันคือหลีกเลี่ยงมัน ...

ฉันชอบGitExtensions มาก (หรือน้อยกว่าSourceTreeสัดส่วน) เพราะการได้เห็นDAGนั้นสำคัญสำหรับฉันอย่างยิ่งที่จะเข้าใจการทำงานของ Git และคุณยังรับรู้มากขึ้นถึงสิ่งที่ผู้ร่วมให้ข้อมูลรายอื่นทำในโครงการของคุณ!

ใน Visual Studio คุณจะไม่สามารถเห็นความแตกต่างระหว่างไฟล์หรือการคอมมิชชันหรือ (เพิ่มลงในดัชนี) และยอมรับการดัดแปลงเพียงบางส่วนเท่านั้น เรียกดูประวัติของคุณไม่ดีเช่นกัน ... ทุกสิ่งที่จบลงด้วยประสบการณ์ที่เจ็บปวด!

และตัวอย่างเช่น GitExtensions มาพร้อมกับปลั๊กอินที่น่าสนใจ: การดึงข้อมูลพื้นหลัง, GitFlow, ... และตอนนี้การรวมกันอย่างต่อเนื่อง !

สำหรับผู้ใช้Visual Studio 2015นั้น Git กำลังเป็นรูปเป็นร่างถ้าคุณติดตั้งส่วนขยาย GitHub แต่เครื่องมือภายนอกยังดีกว่า ;-)


GitExtensions ทำงานอย่างไรให้กับคุณในปี 2015? เมนูใช้งานไม่ได้สำหรับฉันgithub.com/gitextensions/gitextensions/issues/2815
raklos



14

ทางออกที่ง่ายที่สุดที่ใช้งานได้ดีคือการเพิ่มคำสั่ง TortoiseGit เป็นเครื่องมือภายนอก

โซลูชันสำหรับการเพิ่มแถบเครื่องมือ Git (TortoiseGit) ใน Visual Studio


1
คุณสามารถเรียก git ได้โดยตรงจาก Package Manager Console ซึ่งเป็นเพียงบรรทัดคำสั่ง PowerShell หรือ ... superuser.com/a/879561/135416
drzaus

10

ดังที่ Jon Rimmer กล่าวไว้คุณสามารถใช้ GitExtensions GitExtensions ทำงานใน Visual Studio 2005 และ Visual Studio 2008 และทำงานใน Visual Studio 2010 หากคุณคัดลอกและกำหนดค่าไฟล์. Addin ด้วยตนเอง


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

10

ขณะนี้มี 2 ตัวเลือกสำหรับการควบคุมแหล่ง Git ใน Visual Studio (2010 และ 12):

  1. ผู้ให้บริการการควบคุมแหล่ง Git
  2. ผู้ให้บริการ Microsoft Git

ฉันลองทั้งคู่แล้วพบว่ารุ่นที่ 1 มีความเป็นผู้ใหญ่มากกว่าและมีคุณสมบัติมากกว่าเดิม ตัวอย่างเช่นมันเล่นได้ดีกับทั้งส่วนขยาย git และ git ที่เป็นเต่าและแม้แต่แสดงคุณสมบัติของมัน

หมายเหตุ : ส่วนขยายใดก็ตามที่คุณใช้ตรวจสอบให้แน่ใจว่าคุณเปิดใช้งานส่วนขยายTools -> Options -> Source control -> Plugin Selectionนั้นเพื่อให้ทำงานได้


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