Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

1

21.12.2016, 16:00

Gitignore-Datei für Unity mit mehreren Entwicklern

Guten Tag,
ich habe eine Frage bezüglich der .gitignore-Datei bei Unity Projekten. Lässt man sich eine Datei generieren ( z.B. über Github oder https://www.gitignore.io/ ) so erhält man folgenden Dateiinhalt:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Created by https://www.gitignore.io/api/unity

### Unity ###
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/Assets/AssetStoreTools*

# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd


# Unity3D generated meta files
*.pidb.meta

# Unity3D Generated File On Crash Reports
sysinfo.txt

# Builds
*.apk
*.unitypackage

# End of https://www.gitignore.io/api/unity

Ist diese Datei bereits ausreichend, um mit anderen Entwicklern ein gemeinsames Projekt starten zu können? Zum Testen wurden die Unity Assets zu Beginn importiert und in einen separaten Ordner gelegt, um sie schnell zu löschen, falls sie nicht mehr benötigt werden. Öffnet man das Projekt und schließt es direkt wieder, ergeben sich beim Commit über 2200 Änderungen. Ich denke nicht, dass das so sein soll und habe mal ein Bild beigefügt, wo man den Commit sehen kann.

Die Datei soll ja gar keine besonderen Features haben, ich kenne mich damit eh viel zu wenig aus, sie soll nur sicherstellen, dass man ohne Konflikte gemeinsam an einem Projekt arbeiten kann. Wäre super, wenn jemand mir das erklären kann.
»Garzec« hat folgendes Bild angehängt:
  • Bild.png

Tobiking

1x Rätselkönig

  • Private Nachricht senden

2

21.12.2016, 16:22

Sieht für mich aus als liegt das gitignore File im falschen Verzeichnis. Es wird /Library/ ignoriert, die angegebenen Commits sind aber /CihTog/Library/ und matchen daher nicht.

Ansonsten kann es noch sein das trotzdem Änderungen getrackt werden, weil die Dateien irgendwann mal eingecheckt wurden. Dann wirkt die gitignore nicht. Da hilft dann ein "git rm --cached"

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

3

21.12.2016, 18:17

Danke für den Hinweis

Superwayne

Treue Seele

Beiträge: 242

Beruf: Student & App Entwickler (Xamarin)

  • Private Nachricht senden

4

21.12.2016, 19:38

Ein Hinweis, falls noch nicht geschehen: Unter Edit->Project Settings->Editor einmal "Visible Meta files" einstellen und die Asset Serialization auf "Forced Text" oder so stellen.

Falls mehrere Leute gleichzeitig die gleiche Scene bearbeiten (sehr wahrscheinlich), sollte sich zumindest einer von euch auch mit UnityYAMLMerge auseinandersetzen. Das Tool erleichtert das zusammenführen von Scenes und Prefabs ungemein. Unter https://docs.unity3d.com/Manual/SmartMerge.html im Abschnitt "Setting up UnityYAMLMerge for Use with Third Party Tools " steht das wichtigste. Folgender Abschnitt sollte unbedingt beachtet werden:
"UnityYAMLMerge is shipped with a default fallback file (called mergespecfile.txt, also in the Tools folder) that specifies how it should proceed with unresolved conflicts or unknown files. This also allows you to use it as the main merge tool for version control systems (such as git) that don’t automatically select merge tools based on file extensions. The most common tools are already listed by default in mergespecfile.txt but you can edit this file to add new tools or change options."
Wenn ihr kein Fallback Tool definiert und es zu einem Konflikt kommt (z.B. zwei Personen haben den gleichen Würfel an eine jeweils andere Stelle geschoben), kann UnityYAMLMerge das nicht lösen. In dem Fall wird erst alles zusammengebracht, was automatisch funktioniert und anschließend die restlichen Konflikte im Fallback Tool geöffnet. Ist kein Fallback angegeben (standardmäßig der Fall), beendet sich das Programm und der Merge-Vorgang wird nicht abgeschlossen.

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

5

22.12.2016, 09:39

Direkt mal eingestellt, danke ;)

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

6

22.12.2016, 11:02

@Tobiking wo muss den die .gitignore liegen? Bei uns liegt sie im Root Verzeichnis. Weißt du auch, wieso die Commits dann nicht matchen? Wie müsste man das anpassen, damit sie matchen.

Und zum "git rm --cached", wo genau muss das ausgeführt werden, lokal oder auf dem Server, wo der Code liegt oder .. ?

Tobiking

1x Rätselkönig

  • Private Nachricht senden

7

22.12.2016, 12:25

@Tobiking wo muss den die .gitignore liegen? Bei uns liegt sie im Root Verzeichnis. Weißt du auch, wieso die Commits dann nicht matchen? Wie müsste man das anpassen, damit sie matchen.

So wie das gitignore File geschrieben ist, muss es im Order des Unity Projekts (aka dort wo der Ordner "Library" ist) liegen. Euer Repository Root scheint nicht das Projekt Root zu sein. Daher muss das File in CihTog liegen.


Und zum "git rm --cached", wo genau muss das ausgeführt werden, lokal oder auf dem Server, wo der Code liegt oder .. ?

Das Konzept von Git kennt keinen Server. Entsprechend "lokal" ausführen und danach in das zentrale Repo einchecken.

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

8

22.12.2016, 14:07

Super Danke, das Verschieben hat schon funktioniert. Ich hatte gedacht das Rootverzeichnis würde ausreichen, bzw. wir hatten wohl zu viele Ordner.

Eine Frage hätte ich noch, warum ist der Ordner ProjectSettings nicht Teil der Gitignore? Ist es wichtig, dass die Dateien in dem ProjectSettings Ordner comittet werden? Eigentlich sollten die doch lokal bleiben oder nicht.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

9

22.12.2016, 14:09

Eigentlich sollten die doch lokal bleiben oder nicht.

wenn du sie commitest dann bleiben sie ja eben nicht lokal.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

10

22.12.2016, 15:05

Natürlich, das ist mir bewusst. Meine Frage war nur, ob die comittet werden müssen oder ob man sie nicht comittet.

Werbeanzeige