จะใช้ 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.