Ich habe "traditionelle" Versionskontrollsysteme verwendet, um Quellcode-Repositories in früheren Projekten zu verwalten. Ich beginne ein neues Projekt mit einem verteilten Team und ich sehe Vorteile bei der Verwendung eines verteilten Systems. Vorausgesetzt, dass ich SourceSafe, CVS und Subversion verstehe; Welche Vorschläge hast du für einen Git-Neuling?Was sollte ich über Git wissen, bevor ich es benutze?
Antwort
Die Git - SVN Crash Course ist eine gute Lektüre für den Einstieg.
Vor dem Übertragen von Dateien müssen sie dem Git-Staging-Bereich — alle Mal hinzugefügt werden. Um dies zu erleichtern, gibt es eine -a
Option zum Hinzufügen aller überwachten Dateien, wie in git commit -a
.
Auch wenn Sie git diff
tun, zeigt es Ihnen nur den Unterschied zwischen Ihrer Arbeitskopie und was im Staging-Bereich ist. Wenn Sie dem Bereitstellungsbereich geänderte Dateien hinzugefügt haben, meldet git diff
möglicherweise nichts, obwohl Sie möglicherweise nicht festgeschriebene Änderungen vorgenommen haben. Verwenden Sie git status
, um sicher zu sehen.
die tutorial
spielen Sie dann mit ihm um. Machen Sie ein kleines Spielzeugprojekt, um ein Gefühl dafür zu bekommen, bevor Sie anfangen, mit Ihrer Hauptcodebasis zu arbeiten.
Ich benutze gitk viel, um Patches zu überprüfen und zu verfolgen, wie sich der Code von Commit zu Commit ändert.
Ich versuchte git in meiner Firma. Wir verwendeten CVS und wollten zu einem besseren VC-Tool wechseln. Wir haben git als bestes Tool für die Versionsverwaltung von Dateien ausgewählt (Linus on GIT). Seine Leistung ist einfach die beste und es ist ein wirklich tolles Werkzeug für einen Entwickler, der die Versionskontrolle in der Tiefe versteht, aber es ist ein Albtraum für einen normalen Entwickler, der Versionskontrolle im Hintergrund verwendet und nicht lernen möchte, wie man mehr verwendet als einige Stunden (und sie müssen eine Menge lernen)
Auch ist die Integration mit bestehenden IDEs weit weg, um abgeschlossen zu sein. Die gesamte Benutzerfreundlichkeit ist ein ziemlich großes Problem für einen normalen Entwickler.
Nach einem Pilotprojekt mit 4 Entwicklern haben wir als einfachste, aber nicht so überlegene Software auf Subversion umgestellt.
Es gibt auch kommerzielle Lösung für Subversion Multisite (die wir noch nicht versuchen, aber werden versuchen, kurz) - WANDisco
In meiner eigenen Erfahrung von Subversion zu Git bewegen, das Wichtigste nicht das, was Sie brauchen zu lernen, aber was Sie brauchen, um verlernen. Die verteilte Versionskontrolle ist sehr, die sich von der zentralisierten Versionskontrolle unterscheidet. CVC ist eine Teilmenge von DVC, also können Sie CVC einfach in einem DVC-Tool ausführen, aber es wird komplizierter als mit einem CVC-Tool.
Versuchen Sie CVC zu verlernen, und gehen Sie in die DVC-Denkweise. Wenn Sie am Ende CVC in einem DVC-Tool tun, werden Sie nur frustriert von all der zusätzlichen Komplexität und Sie werden nicht erkennen, was diese zusätzliche Komplexität Sie in Bezug auf Flexibilität kauft.
Alle DVC-Tools haben große und sehr leistungsfähige Unterstützung für die Verzweigung und Zusammenführung. Benutze es. Die ganze Geschichte ist auf Knopfdruck verfügbar. Benutze es. (Zum Beispiel: Code nie auskommentieren, einfach löschen. Sie können ihn immer wieder erhalten, sogar in einem Flugzeug ohne Internetverbindung.)
Ein sehr wichtiger Aspekt von Git: Alle anderen Tools haben einen mehr oder weniger definierten Workflow. Git nicht. Git ist ein DVCS-Workflow-Baukasten. Dies macht es manchmal schwierig zu wissen, was zu tun ist: Sie müssen Ihren eigenen Workflow entwerfen und implementieren (Hinweis: Verwenden Sie viele Shell-Skripte). Ich benutze Git seit mehr als einem Jahr, und ich habe meinen Workflow noch nicht vollständig verstanden.
- 1. Was sollte ich wissen bevor ich Apache solr starte?
- 2. Was C# Wissen sollte ich haben?
- 3. Was sollte ich über den F # CTP wissen?
- 4. Was sollte ich über das antisoziale Verhalten von Benutzern wissen?
- 5. Was soll ich über Joomla wissen?
- 6. Was muss ich über dynamische Programmierung wissen?
- 7. Was sollte ich wissen, wenn ich einen Namensraumnamen auswähle?
- 8. Was sollte ein Entwickler wissen, bevor er mobile Apps erstellt?
- 9. Was muss ich über C++ 0x wissen?
- 10. Was sollte ich überprüfen, bevor ich eine Webanwendung veröffentliche?
- 11. Gibt es etwas, was ich über die jquery .text-Methode wissen sollte?
- 12. Was muss ich wissen, bevor ich mich für eine Junior-Entwicklerposition bewerbe?
- 13. Was genau benutze ich?
- 14. wxDataViewModel: Was ist das und wie benutze ich es?
- 15. Was sollte ich bei der UDP-Socket-Programmierung wissen?
- 16. Wie kopiere ich in die Zwischenablage, bevor ich sie benutze
- 17. Sollte ich Tests schreiben, bevor sie kompilieren?
- 18. Wie benutze ich rand_r und wie benutze ich es threadsicher?
- 19. Was jeder C++ Entwickler über das Verknüpfen wissen sollte
- 20. Was sollte ein Entwickler über Interoperabilität mit verwaltetem Code wissen?
- 21. Kann ich "Releases" in git erstellen, so wie ich es kann, wenn ich github benutze?
- 22. Was sollte ein .NET-Entwickler über MSBuild wissen?
- 23. Was sollte jeder Programmierer über Hardware-Interna wissen?
- 24. Was sollte ich wissen, wenn ich von MIPS auf x86-Assembly umschalte?
- 25. Was sollte ich über die Entwicklung für 64-Bit-Anwendungen wissen?
- 26. Was sollte ich über das Senden von E-Mails in einem Hintergrund-Thread wissen? ASP.NET
- 27. Bei der Migration von Java nach C# Was sollte ich über Accessor-Klassen wissen
- 28. Wie benutze ich git mv von magit?
- 29. Was muss ich über XML-Signaturen wissen, damit SAML funktioniert?
- 30. Wie benutze ich Webstorm zu Git
... es sei denn, Sie befehlen "git diff foo/bar.file" –