2012-07-28 20 views
7

Immer noch eine harte Zeit bekommen meinen Kopf um das Konzept der Inszenierung gewickelt, wie es für Git gilt.Erste Git-Konzept von "Bühne"

Können irgendwelche Analogien mit SVN gemacht werden? Was ist der Hauptzweck, ein Bühnenlevel in Git zu haben?

+1

Pedanticism: es ist nicht "GIT", es ist "Git". Es ist kein Akronym/Abkürzung für irgendetwas, Linus nannte es nach sich selbst. – millimoose

+1

ok danke ich es git;) –

Antwort

7

Similarities:

Dateien, die Teil des Repository sein sollte muss verfolgten zugesetzt werden, um. Beide Tools verwenden den Befehl add, um dies zu erreichen. Das Hinzufügen von Dateien bedeutet das Vorbereiten eines Commits.

Unterschiede:

Git erlaubt eine weitere Art von Detail, wenn das Hinzufügen von Dateien. Sie können entscheiden, eine ganze Datei oder einzelne Codezeilen hinzuzufügen. Hinzufügen von Dateien zum Index oder Stufe ermöglicht mehr Flexibilität. SVN überträgt automatisch alle Änderungen an einer Datei, die bereits zum Repository hinzugefügt wurde. Git überlässt dem Benutzer die Entscheidung, welche Änderungen sich jeder Commit-Operation zuordnen lassen. Mit anderen Worten: das nächste commit in Git enthält nur die Änderungen (Zeilen oder Dateien), die inszeniert wurden, unabhängig vom Tracking-Status der Dateien. SVN enthält automatisch alle Änderungen an den verfolgten Dateien.

Zusätzliche Informationen:

versuchen, einige Beiträge zu beschreiben Git Workflows wie die von Oliver Steele zu lesen. Aber seien Sie sich bewusst, dass es nicht eine Weise gibt, Git zu benutzen - es gibt viele. Wenn Sie möchten, können Sie Git verwenden, als ob Sie mit SVN arbeiten würden.
Erwarten Sie nicht, die Philosophie von Git in kurzer Zeit zu verstehen. Es hat ein Jahr gedauert, bis ich dazu gekommen bin und ich lerne immer noch neue Wege, es zu benutzen. Ich denke, es ist noch schwieriger, wenn du mit SVN-Mentalität aufgewachsen bist. Es gibt Tonnen von Materialien da draußen: Artikel, Videos, ... - nehmen Sie sich Zeit und probieren Sie einige von ihnen. Hier ist eine Auswahl aus der Liste, die ich gesammelt habe.

+0

Danke. Ich denke, der 'pull'-Befehl ist dem SVN' update'-Befehl sehr ähnlich. Nein? –

+0

Bin ich richtig in der Annahme, dass "Konflikte" bei der Verwendung von Git verhindert werden, da Sie einen Pull zuerst machen müssen, bevor Sie einen Push ausführen, wenn Sie mit einem anderen Entwickler zusammenarbeiten? –

+0

Und dass ein Update ist etwas analog zu einem Git-Pull? –

6

Der Hauptvorteil des Staging-Bereichs besteht darin, dass Sie nur einen Teil der Änderungen in einer bestimmten Datei festschreiben können. (Zum Beispiel mit git add -p.) Soweit ich weiß, ist die einzige Möglichkeit, einen "partiellen" Commit in SVN durchzuführen, auf einer Datei-Ebene oder durch manuelles Sichern einer Datei und dann zeitweiliges Zurücksetzen der Änderungen, die Sie nicht vornehmen möchte begehen.

Das ist großartig, wenn Sie (wie ich) kein hochorganisierter Entwickler sind und Änderungen nach der Tat in "ordentliche" Commits sortieren wollen. Dies folgt der allgemeinen Haltung von Git, die es vorzieht, Ihnen Flexibilität hinsichtlich der Durchsetzung von Strenge zu geben. Wenn Sie es nicht benötigen, können Sie es immer einfach nicht verwenden und git commit -a ... verwenden.

Es gibt keine Analogien mit SVN, da SVN kein Git ist und kein solches Konzept hat.

4

Hier sind einige der Szenarien, die die Nützlichkeit der Inszenierung zeigen:

  • Sie arbeiten an einem bestimmten Stück und haben in Ihrem Projekt einige Änderungen vorgenommen. Sie wollen sie noch nicht festlegen, bevor Sie das Ganze testen. Aber diese Änderungen können oft unabhängig genug sein, um mehrere logische Commits zu machen, als eine einzige große. Dies ist, wenn Sie selektive Teile inszenieren und mehrere Commits machen.

  • Inszenierung war beim Debuggen besonders hilfreich. Sie können die Protokollanweisungen streuen, um die Quelle des Fehlers zu verfolgen. Dann machen Sie das Update und testen Sie erneut mit diesen Protokollanweisungen. Aber Sie möchten den Fix festschreiben, bevor Sie Änderungen am Code zum Löschen dieser Protokollanweisungen vornehmen.

  • Ein anderes Szenario, in dem es sich als hilfreich erwiesen hat, ist, wenn Sie gerade etwas tun und etwas unzusammenhängendes wie einen Tippfehler finden, den Sie beheben und schnell aus dem Weg räumen wollen.

Es gibt mehrere andere solche Szenarien, und wahrscheinlich würden Sie nicht in der Lage sein, mit etwas zu arbeiten, das dieses Konzept fehlt, wenn Sie einen Fall von ihm :) bekommen.

PS: Ich habe SVN überhaupt nicht verwendet, so kann ich die Vergleiche zwischen den beiden nicht machen.

+1

Nichts von dem, was Sie hier sagen, erfordert einen Bereitstellungsbereich. Zum Beispiel können Sie mit 'git commit ' mehrere Änderungen in mehrere Commits vornehmen. Natürlich geht das durch den Stagingbereich, aber nur kurz auf dem Weg zum Commit. – Kaz

+0

Ich wollte nur das Konzept der Inszenierung durch einige Szenarien hervorheben. Sie können ein einzelnes Ziel in vielerlei Hinsicht erreichen. Dies ist weder eine vollständige Liste von Szenarios, in denen Staging sinnvoll ist, noch ist Staging der einzige Weg, um diese Ergebnisse zu erzielen. Nur Beispiele aus meiner Erfahrung, um die Vorteile der Inszenierung zu verstehen. – Sailesh

Verwandte Themen