จะใช้ Git สำหรับการควบคุมแหล่ง Unity3D ได้อย่างไร


499

วิธีปฏิบัติที่ดีที่สุดสำหรับการใช้การควบคุมแหล่งGitด้วย Unity 3D โดยเฉพาะในการจัดการกับลักษณะไบนารีของโครงการ Unity 3D คืออะไร โปรดอธิบายเวิร์กโฟลว์เส้นทางใดที่จะรวมอยู่ใน. gitignore การตั้งค่าใดที่ควรตั้งค่าใน Unity และ / หรือโครงการและสิ่งพิเศษอื่น ๆ ที่ควรจดบันทึกไว้

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


3
"เพิ่งใช้ svn" โดยไม่คำนึงถึงข้อโต้แย้ง git V svn อย่างไม่มีจุดหมาย git ไม่ได้ใช้สำหรับไฟล์ไบนารีขนาดใหญ่ โครงการเอกภาพคือภาพยนตร์ (และไฟล์ไบนารี่มากมาย - พื้นผิว ฯลฯ ) พร้อมเส้นรหัสจำนวนหนึ่ง คุณจะใช้คอมไพล์เพื่อเก็บภาพยนตร์ของคุณไหม? svn อย่างน้อยก็สมเหตุสมผล
— Fattie

1
ทางออกที่ง่ายที่สุดคือการแยกโฟลเดอร์ไบนารีทั้งหมดด้วย gitignore และใช้ git สำหรับไฟล์รหัสจริงของคุณและไฟล์สินทรัพย์ของคุณ ไบนารีทั้งหมดไม่จำเป็นต้องรวมเนื่องจากสมาชิกทุกคนในทีมสามารถรวบรวมเพื่อตนเองได้หรือไม่
— Kokodoko

@Kokodoko Artists ไม่สามารถรวบรวมไฟล์ปฏิบัติการของตัวเอง
— Crashworks

แม้ว่ามันจะเป็นจริงพวกเขายังคงสามารถผลักดันสินทรัพย์ภาพใหม่เพื่อคอมไพล์ ... เพื่อให้ devs สามารถคอมไพล์ด้วยงานศิลปะใหม่ ...
— Kokodoko

@Kokodoko นั่นหมายความว่าศิลปินจะต้องรอให้นักพัฒนาเห็นความมุ่งมั่นและสร้างเพื่อที่จะเห็นการเปลี่ยนแปลงในเกม นั่นคือเวลาทำซ้ำนานมาก
— Crashworks

คำตอบ:


522

ต่อไปนี้เป็นข้อความที่ตัดตอนมาจากบล็อกส่วนตัวของฉัน

ใช้ Git กับเกม 3 มิติ

อัปเดตตุลาคม 2558: GitHub ได้เปิดตัวปลั๊กอินสำหรับ Git ชื่อGit LFSที่เกี่ยวข้องโดยตรงกับปัญหาด้านล่าง ตอนนี้คุณสามารถเวอร์ชั่นไบนารีไฟล์ขนาดใหญ่ได้อย่างง่ายดายและมีประสิทธิภาพ!

Git สามารถใช้งานได้ดีกับเกม 3 มิติ อย่างไรก็ตามข้อแม้หลักที่นี่คือไฟล์สื่อที่มีเวอร์ชันขนาดใหญ่ (> 5 MB) อาจเป็นปัญหาในระยะยาวเนื่องจาก Bloats ของประวัติการส่งข้อมูลของคุณ เราได้แก้ไขปัญหาที่อาจเกิดขึ้นนี้ในโครงการของเราโดยการกำหนดเวอร์ชันสินทรัพย์ไบนารีเท่านั้นเมื่อพิจารณาเป็นที่สิ้นสุด ศิลปิน 3D ของเราใช้Dropboxในการทำงานต่อสินทรัพย์ WIP ทั้งด้วยเหตุผลดังกล่าวข้างต้นและเพราะมันมากเร็วขึ้นและง่าย (ศิลปินไม่มากอย่างแข็งขันจะต้องการใช้ Git!)

Git Workflow

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

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

แอปพลิเคชันไคลเอนต์ Git GUI

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

Unity3D ละเว้นโฟลเดอร์

สำหรับการเช็คเอาต์รุ่นที่ทันสมัยGithub เก็บรักษาไฟล์ Unity.gitignoreโดยไม่มีระบบปฏิบัติการเฉพาะ

# =============== #
# Unity generated #
# =============== #
Temp/
Library/

# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
ExportedObj/
obj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj

# ============ #
# OS generated #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

การตั้งค่า Unity3D

สำหรับรุ่น Unity 3D v4.3 ขึ้นไป:

  1. (ข้ามขั้นตอนนี้ใน v4.5 ขึ้นไป) เปิดใช้งานตัวเลือกในExternalUnity → Preferences → Packages → Repository
  2. เปิดEditเมนูและเลือกProject Settings → Editor:
    1. สวิทช์ไปVersion Control ModeVisible Meta Files
    2. สวิทช์ไปAsset Serialization ModeForce Text
  3. บันทึกฉากและโครงการจากFileเมนู

ต้องการให้คุณย้าย repo ที่มีอยู่ไปยัง LFS หรือไม่

ตรวจสอบการโพสต์บล็อกของฉันสำหรับขั้นตอนในการทำที่นี่

การกำหนดค่าเพิ่มเติม

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

เพิ่ม Git post-merge hook นี้ใน/.git/hooks/โฟลเดอร์สำหรับที่เก็บที่มี Unity3D project อยู่ หลังจากดึง / ผสาน Git แล้วมันจะดูว่าไฟล์ใดถูกลบไปตรวจสอบว่าไดเรกทอรีนั้นมีอยู่ว่างเปล่าหรือไม่และถ้าเป็นเช่นนั้น


2
พูดถึงเกี่ยวกับเวิร์กโฟลว์คอมไพล์เป็นสิ่งที่ดี แต่บางทีฉันควรชี้แจงในคำถามของฉันฉันถามเกี่ยวกับเวิร์กโฟลว์เฉพาะโดยเฉพาะกับเอกภาพ 3D อย่างที่คุณอาจจะรู้ว่าโครงการเอกภาพนั้นพึ่งพาไฟล์ไบนารี มีข้อควรพิจารณาเป็นพิเศษในการจัดการกับเรื่องนี้หรือไม่? คำแนะนำบางอย่างที่ฉันพบเมื่อทำการค้นคว้าหัวข้อนี้คือการใช้เวิร์กโฟลว์ที่หลีกเลี่ยงการรวมกันมากที่สุด บางทีคุณอาจไม่ได้มีส่วนร่วมในความรู้สึกนี้ แต่คำถามของฉันมีความเฉพาะเจาะจงมากขึ้นสำหรับปัญหาเฉพาะของ unity3 แทนที่จะเป็นค่ากำหนดเวิร์กโฟลว์ทั่วไป
— PressingOnAlways

3
เราใช้git-annexเพื่อจัดการเนื้อหาไบนารี่ขนาดใหญ่ของเรา การสนับสนุน Windows จะไม่น่ากลัวแต่ก็จะเริ่มดีขึ้น สิ่งนี้จะเป็นประโยชน์หากคุณไม่สนใจเกี่ยวกับการติดตาม revs ในไฟล์ไบนารีขนาดใหญ่
— Jerdak

2
การอัปเดตสิ่งนี้ - เราลองการตั้งค่าของคุณและใช้งานได้ดี แต่เราต้องการให้ซิงค์เนื้อหาของเราโดยอัตโนมัติ ตอนนี้เราใช้ sugarsync เพื่อเลือกโฟลเดอร์สินทรัพย์ไบนารี Dropbox จะซิงค์โฟลเดอร์ดรอปบ็อกซ์เท่านั้น แต่ด้วยการซิงค์น้ำตาลคุณจะสามารถซิงค์โฟลเดอร์ได้ทุกที่บนฮาร์ดไดรฟ์ซึ่งมีประโยชน์อย่างยิ่ง เราต้องเปลี่ยนโครงสร้างไดเรกทอรีสินทรัพย์ของเราเล็กน้อยเพื่อกำหนดหนึ่งโฟลเดอร์ย่อยสำหรับไฟล์ไบนารีขนาดใหญ่เหล่านี้ แต่จนถึงตอนนี้มันทำงานได้ดีจริงๆ เราเพียงแค่. gitignore โฟลเดอร์นั้นและอนุญาตให้น้ำตาลซิงค์เพื่อให้มันอยู่ในซิงค์
— PressingOnAlways

2
ทำไมเลือกที่จะไปกับHidden Meta Files?
— Slipp D. Thompson

2
แก้ไขการคัดลอกและวางของฉันผิด - ใช่มันควรเป็นไฟล์ Meta ที่มองเห็นได้
— S.Richmond

60

ใน Unity 4.3 คุณต้องเปิดใช้งานตัวเลือกภายนอกจากการกำหนดค่าตามความชอบ แต่เนื่องจาก Unity 4.5 จะมีตัวเลือกสำหรับตัวเลือกนั้นดังนั้นกระบวนการตั้งค่าแบบเต็มจึงมีลักษณะดังนี้:

  1. สลับไปVisible Meta FilesในEditor → Project Settings → Editor → Version Control Mode
  2. เปลี่ยนเป็น Force TextในEditor → Project Settings → Editor → Asset Serialization Mode
  3. บันทึกฉากและโครงการจาก Fileเมนู

อีกทั้งทีมของเรากำลังขยายเพิ่มเติมอีกเล็กน้อย .gitignoreไฟล์ที่ :

# =============== #
# Unity generated #
# =============== #
Temp/
Library/

# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
ExportedObj/
obj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj

# ============ #
# OS generated #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

โปรดทราบว่าเฉพาะโฟลเดอร์ที่คุณต้องการเก็บไว้ภายใต้การควบคุมของแหล่งที่มาเท่านั้น AssetsProjectSettingsและ

ข้อมูลเพิ่มเติมเกี่ยวกับการรักษาความสามัคคีโครงการภายใต้การควบคุมแหล่งที่คุณสามารถหาได้ในโพสต์นี้


อาจจะดีกว่าถ้าคุณแก้ไขคำตอบของฉันที่ด้านบนเพื่อรวมตัวเลือกใหม่เหล่านี้ :)
— S.Richmond

6
ทำไมเลือกที่จะไปกับHidden Meta Files?
— Slipp D. Thompson

จุดหนึ่งผิดอย่างชัดแจ้ง ไม่มีความสามัคคี→ค่ากำหนด→แพคเกจ→พื้นที่เก็บข้อมูล
— Agostino

1
ตามdocs.unity3d.com/ คู่มือ /ควรเป็นไฟล์ Meta ที่มองเห็นได้
— Markus

1
ทำงานได้ดีสำหรับทีมของฉัน ขอบคุณมาก.
— eifersucht

34

GIT คืออะไร

Git เป็นระบบควบคุมเวอร์ชันฟรีและโอเพ่นซอร์ส (SCM) ที่พัฒนาโดย Linus Torvalds ในปี 2005 (ผู้ก่อตั้ง Linux OS) มันถูกสร้างขึ้นเพื่อควบคุมทุกอย่าง rom ขนาดเล็กถึงขนาดใหญ่ด้วยความเร็วและประสิทธิภาพ บริษัท ชั้นนำอย่าง Google, Facebook, Microsoft ใช้ GIT ทุกวัน

หากคุณต้องการที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ GIT ตรวจสอบเรื่องนี้อย่างรวดเร็วกวดวิชา ,

ก่อนอื่นตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าสภาพแวดล้อม Git ของคุณคุณต้องตั้งค่าสภาพแวดล้อมในพื้นที่ของคุณและที่เก็บ Git (ฉันชอบ Github.com)

แอปพลิเคชันไคลเอนต์ GIT Mac / Windows

สำหรับแอปพลิเคชันไคลเอนต์ GIT ฉันขอแนะนำให้คุณไปกับ Github.com

GitHub เป็นที่สำหรับแบ่งปันรหัสกับเพื่อนร่วมงานเพื่อนร่วมชั้นและคนแปลกหน้า ผู้คนกว่าห้าล้านคนใช้ GitHub เพื่อสร้างสิ่งที่น่าอัศจรรย์ร่วมกัน

ตั้งค่า Unity3d

คุณต้องทำการตั้งค่าเหล่านี้

เปลี่ยนเป็นไฟล์ Meta ที่มองเห็นได้ในแก้ไข→การตั้งค่าโครงการ→แก้ไข→โหมดการควบคุมเวอร์ชัน

ป้อนคำอธิบายรูปภาพที่นี่

เปิดใช้งานตัวเลือกภายนอกใน Unity →การกำหนดค่าตามความชอบ→แพ็คเกจ→พื้นที่เก็บข้อมูล

ป้อนคำอธิบายรูปภาพที่นี่

สลับเป็นบังคับข้อความในแก้ไข→การตั้งค่าโครงการ→แก้ไข→โหมดการจัดลำดับสินทรัพย์

ป้อนคำอธิบายรูปภาพที่นี่

ที่มา: การใช้ Git ด้วยการควบคุมแหล่งเกม 3D


6
+1 คำตอบนี้เขียนไว้ข้างต้นแล้ว แต่คำตอบ @NabeelSaleem ช่วยฉันด้วยภาพที่เขาให้และคำแนะนำที่ชัดเจน :) ขอบคุณ
— aflatoon

3
ฉันหาPreferences > PackagesUnity 5.x Normal ไม่ได้ใช่ไหม ty
— Yves Lange

5
@NabeelSaleem ใช่ จริงๆแล้วขั้นตอนนี้ใน Unity 5.x ไม่จำเป็น ty
— Yves Lange

22

เพื่อเพิ่มทุกอย่างที่ระบุไว้มันยังเหมาะที่จะใช้git lfsกับ Unity ฉันใช้มันมาตั้งแต่มันออกมาและฉันก็ไม่มีปัญหาอะไร

คุณจะต้องเพิ่มสิ่งนี้.gitattributesถัดจาก.gitignoreไฟล์ของคุณ

*.cs diff=csharp text
*.cginc text
*.shader text

*.mat merge=unityyamlmerge eol=lf
*.anim merge=unityyamlmerge eol=lf
*.unity merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf
*.physicsMaterial2D merge=unityyamlmerge eol=lf
*.physicsMaterial merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf

*.a filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.FBX filter=lfs diff=lfs merge=lfs -text
*.rns filter=lfs diff=lfs merge=lfs -text
*.reason filter=lfs diff=lfs merge=lfs -text
*.lxo filter=lfs diff=lfs merge=lfs -text

นั่นคือรายการไฟล์กลิ้งของฉัน หากคุณใช้ไฟล์ไบนารีเพิ่มเติมที่ไม่อยู่ในรายการให้เพิ่มเข้าไป

ฉันยังมีไฟล์ที่กำหนดค่าให้ใช้ yamlmerge คุณจะต้องตั้งค่านี้ คุณสามารถอ่านได้ที่นี่: http://docs.unity3d.com/Manual/SmartMerge.html


11

ตอนนี้เรามีการผสานรวมกับ Github กับ Unity extension อย่างต่อเนื่อง ... https://unity.github.com/

GitHub สำหรับส่วนขยายใหม่นำเวิร์กโฟลว์ GitHub และอื่น ๆ สู่ Unity ให้การสนับสนุนไฟล์ขนาดใหญ่ด้วย Git LFS และการล็อกไฟล์

ในช่วงเวลาของการเขียนโครงการเป็นอัลฟา แต่ยังคงใช้งานได้สำหรับโครงการส่วนบุคคล


คุณลองนี่ไหม
— Nabeel K

11

ฉันคิดว่าฉันอาจโพสต์ข้อความที่เรียบง่าย.gitignoreสำหรับทุกคนที่สนใจ:

# Ignore Everything
/*

# Except for these:
!/.gitignore
!/Assets
!/Packages
!/ProjectSettings

7
อีกครั้งคำตอบทั้งหมดเหล่านี้ค่อนข้างล้าสมัยในหน้านี้ ถ้าด้วยเหตุผลบางอย่างคุณต้องใช้คอมไพล์ด้วย Unity, github.com/github/gitignore/blob/master/Unity.gitignore
— Fattie

เล็กเรียบง่ายและเข้ากันได้อย่างสมบูรณ์กับทุกเวอร์ชัน: ฉันพบว่าสคริปต์นี้ใช้งานได้ดีที่สุดแม้กับ Unity 2017 และ 2018 ที่เพิ่งเปลี่ยนโครงสร้างโครงการของพวกเขา ( UnityPackageManager/และPackages/)
— Isaak Eriksson

8

สิ่งสำคัญที่ต้องจำเมื่อใช้ git สำหรับการควบคุมเวอร์ชันซอร์สโค้ด unity-3d:

(A) ไม่เช็คอินในโฟลเดอร์ห้องสมุด ฉันเคยทำผิดพลาดหลายครั้งในอดีตและประสบกับมัน! ลบหรือย้ายโฟลเดอร์ไลบรารีก่อนเพิ่มโครงการ / ไฟล์ของคุณลงในคอมไพล์

(B) ใช้ "ไฟล์ Meta ที่มองเห็นได้" - สำหรับรุ่น Unity ล่าสุด - 5.3.4 และสูงกว่าสิ่งนี้เกิดขึ้นตามค่าเริ่มต้น สำหรับรุ่นก่อนหน้าบางรุ่นคุณต้องเปลี่ยนการตั้งค่าภายใต้: แก้ไข -> การตั้งค่าโครงการ -> การควบคุมเวอร์ชัน

(C) ใช้ไฟล์. gitignore สำหรับ Unity- เพื่อให้แน่ใจว่ามีการดูแลรักษาสติอยู่และไฟล์จะไม่ถูกเพิ่มโดยไม่จำเป็น - ถ้าบน android / tizen - เพิ่มกฎเพื่อแยกไฟล์ APK และ TPK ออกจากที่เก็บ Google สำหรับไฟล์. gitignore เพื่อความสามัคคีหรืออื่น ๆ ใช้รุ่นนี้. gitignore สำหรับ Unity ที่จัดทำโดย GitHub: https://github.com/github/gitignore/blob/master/Unity.gitignore

(D) ตรวจสอบให้แน่ใจว่าไฟล์. gitignore ถูกเพิ่มไปยังที่เก็บเป็นไฟล์แรกที่เพิ่ม - เพราะในอดีตที่ผ่านมาฉันเองพลาดการเพิ่มไฟล์. gitignore มีความคิดมากมายในการเข้าใจถึงปัญหาหลังเกิดเหตุ - แต่ทุกวันนี้ฉันเพิ่งคัดลอกและเพิ่มไฟล์. gitignore เป็นขั้นตอนแรกของการตั้งค่าที่เก็บ

ดังนั้น ... ในการทำให้โครงการ Unity พร้อมสำหรับคอมไพล์ให้ทำดังนี้:

(1) ไปที่โฟลเดอร์โครงการ

(2) พิมพ์ git init

(3) คัดลอกไฟล์. gitignore: บน MacOS: cp ~ / Downloads / .gitignore บน Windows: คัดลอก c: \ Users [ชื่อผู้ใช้ของคุณ] \ Downloads.gitignore

(4) git เพิ่ม. gitignore

(5) เพิ่มคอมไพล์ *

หวังว่านี่จะช่วย ... ทั้งหมดที่ดีที่สุด!


6

Edit -> Project Settings -> Editor

ตั้งค่าการควบคุมเวอร์ชันเป็นไฟล์เมตา ตั้งค่าการจัดลำดับสินทรัพย์ให้บังคับข้อความ

ฉันคิดว่านี่คือสิ่งที่คุณต้องการ


1
แล้วคุณจะตั้งค่าการรวม YAML ได้อย่างไร
— shinzou


6

คุณสามารถใช้Github สำหรับ Unityซึ่งเป็นUnity Extensionที่นำเวิร์กโฟลว์ git มาสู่ UI ของ Unity

Github for Unityเพิ่งเปิดตัวส่วนขยายเวอร์ชัน 1.0

  • มันใช้ git-lfs (สนับสนุนไฟล์ขนาดใหญ่ git) เพื่อจัดเก็บสินทรัพย์ขนาดใหญ่อย่างถูกต้อง
  • การล็อกไฟล์เพื่อให้ไม่มีใครเขียนทับเนื้อหาของคุณ
  • ผลักดันและดึงไป / กลับจากใดพื้นที่เก็บข้อมูลระยะไกล
  • คุณสามารถดาวน์โหลดได้ที่ Unity Asset Store: https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069

5

เฉพาะโฟลเดอร์ทรัพย์สินและProjectSettingsเท่านั้นที่จะต้องอยู่ภายใต้การควบคุมเวอร์ชัน git

คุณสามารถทำ gitignore เช่นนี้

[Ll]ibrary/
[Tt]emp/
[Oo]bj/

# Autogenerated VS/MD solution and project files
*.csproj
*.unityproj
*.sln
*.suo
*.userprefs

# Mac
.DS_Store
*.swp
*.swo

Thumbs.db
Thumbs.db.meta

.vs/

3

Unity ยังจัดเตรียมการควบคุมเวอร์ชันต้นฉบับของตัวเอง ก่อน unity5 มันเป็นเซิร์ฟเวอร์ unityAsset แต่ตอนนี้คิดค่าเสื่อมราคาแล้ว และเปิดตัวระบบควบคุม SVN ใหม่ที่เรียกว่า unity collaborate แต่ปัญหาหลักคือการใช้ unity และ SVN ใด ๆ ที่คอมมิชชันและรวมเข้าด้วยกัน แต่ไม่ใช่ svn ให้เราวิธีการแก้ไขความขัดแย้งหรือผสานฉาก ดังนั้นขึ้นอยู่กับคุณว่า SVN คนไหนที่คุณคุ้นเคย ฉันใช้เครื่องมือ SmartSVN บน Mac และเต่าบนหน้าต่าง

ป้อนคำอธิบายรูปภาพที่นี่


1

เพียงเพิ่มใน subjet ของ Gitignore วิธีที่แนะนำจะละเว้นเฉพาะ Library และ Temp เท่านั้นหากเป็นรากของโครงการ git ของคุณ หากคุณเป็นเหมือนฉันและบางครั้งต้องการโครงการเอกภาพที่จะเป็นส่วนหนึ่งของ repo ไม่ใช่ทั้งหมดของ repo สตริงที่ถูกต้องใน gitignore จะเป็น:

**/[Tt]emp
**/[Ll]ibrary
**/[Bb]uild

0

ฉันต้องการเพิ่มขั้นตอนการทำงานที่ง่ายมากจากคนที่เคยหงุดหงิดกับคอมไพล์ในอดีต มีหลายวิธีในการใช้ git ซึ่งอาจเป็นเรื่องธรรมดาที่สุดสำหรับความสามัคคีคือ GitHub Desktop, Git Bash และ GitHub Unity

https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069

โดยพื้นฐานแล้วพวกเขาทั้งหมดทำสิ่งเดียวกัน แต่เป็นตัวเลือกของผู้ใช้ คุณสามารถมีคอมไพล์สำหรับการตั้งค่าไฟล์ขนาดใหญ่ซึ่งอนุญาตให้เก็บไฟล์ขนาดใหญ่ฟรี 1GB พร้อมที่เก็บข้อมูลเพิ่มเติมที่มีอยู่ในชุดข้อมูลราคา $ 4 / mo สำหรับ 50GB และสิ่งนี้จะช่วยให้คุณสามารถส่งไฟล์> 100mb ไปยังที่เก็บระยะไกล เซิร์ฟเวอร์และตัวชี้ repo ของคุณ)

https://git-lfs.github.com/

หากคุณไม่ต้องการตั้งค่า lfs ด้วยเหตุผลใดก็ตามคุณสามารถสแกนโครงการของคุณสำหรับไฟล์> 128 mb ใน windows โดยพิมพ์ขนาด: ใหญ่ในไดเรกทอรีที่คุณมีโครงการของคุณ วิธีนี้มีประโยชน์ในการค้นหาไฟล์ขนาดใหญ่แม้ว่าอาจมีบางไฟล์ระหว่าง 100mb ถึง 128mb ที่พลาดไป

ป้อนคำอธิบายรูปภาพที่นี่

รูปแบบทั่วไปของ bash git คือ

คอมไพล์เพิ่ม (เพิ่มไฟล์ที่จะผูกมัด)

คอมไพล์คอมมิท -m 'message' (คอมเม้นท์ไฟล์ด้วยข้อความ, มันยังอยู่ในพีซีของคุณและไม่ใช่ใน repo ทางไกล, โดยทั่วไปพวกมันถูก 'versioned' เป็นคอมมิทใหม่)

git push (ไฟล์ push ไปยังที่เก็บ)

ข้อเสียของการทุบตี git สำหรับโครงการเอกภาพคือถ้ามีไฟล์> 100mb คุณจะไม่ได้รับข้อผิดพลาดจนกว่าคุณจะกด จากนั้นคุณต้องยกเลิกการกระทำของคุณโดยรีเซ็ตหัวของคุณเป็นการกระทำก่อนหน้า เป็นเรื่องที่ยุ่งยากโดยเฉพาะถ้าคุณยังใหม่กับ git bash

ข้อดีของ GitHub Desktop คือก่อนที่คุณจะส่งไฟล์ที่มีขนาด 100mb จะทำให้ข้อความแจ้งข้อผิดพลาดปรากฏขึ้น จากนั้นคุณสามารถย่อขนาดไฟล์เหล่านั้นหรือเพิ่มลงในไฟล์. gitignore

ในการใช้ไฟล์. gitignore ให้สร้างไฟล์ชื่อ. gitignore ในไดเรกทอรีรากที่เก็บในเครื่องของคุณ เพียงเพิ่มไฟล์ทีละบรรทัดที่คุณต้องการละเว้น SharedAssets และไฟล์โฟลเดอร์อื่น ๆ ที่ไม่ใช่สินทรัพย์สามารถละเว้นได้และจะ repopulate ในตัวแก้ไขอัตโนมัติ (แพคเกจสามารถนำเข้าใหม่และอื่น ๆ ) นอกจากนี้คุณยังสามารถใช้อักขระตัวแทนเพื่อแยกประเภทไฟล์ได้

ถ้าคนอื่นใช้ GitHub repo ของคุณและคุณต้องการโคลนหรือดึงคุณมีตัวเลือกเหล่านั้นให้คุณใช้บน GitHub บนเดสก์ท็อปหรือ Git bash

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

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