2016-05-27 12 views
1

Dev für eine lange Zeit, aber die Umstellung auf Git für die Versionskontrolle.Haben Remote-FTP-Änderungen nach dem Auschecken eines Git-Zweigs nur Auswirkungen auf Zweig oder Master?

Verzeihen Sie meine wahrscheinlich schmerzhaft offensichtliche Frage hier, aber wie verhält sich git im folgenden Szenario?

Wenn ich eine Verzweigung, 'A', erstellen und diesen Zweig auschecken, wenn ich dann einen FTP-Client öffne, eine Datei herunterladen, einige Änderungen vornehmen und sie erneut hochladen (oder remote mit einem FTP von Sublime aus bearbeiten) Plugin), wurde an dieser Stelle Master geändert oder nur die Verzweigung? Was passiert, wenn jemand anderes diese Datei auf unserem Entwicklungsserver bearbeitet, während ich die Zweigstelle ausgecheckt habe?

Mein Gutdünken sagt, dass man nicht mehrere Personen bearbeiten kann, die physische Dateien auf dem gleichen Server bearbeiten, sondern lokal oder auf einen Dev-Server klonen müssen, der für ihre eigene Bearbeitung gesponnen wird (auch wenn das fürchterlich ineffizient ist). Ich versuche nur sicherzustellen, dass ich meine Gedanken über die Git-Konzepte gut genug verstanden habe.

Bei der Entwicklung von SAP wurden 'Transporte' erstellt, in denen Änderungen verfolgt wurden, aber alle editierten die gleiche Datei auf dem gleichen Server, aber die Transporte zeichneten auf, welche Änderungen vorgenommen wurden und von wem musste Dateien überall klonen. Nicht sicher, Git funktioniert auf die gleiche Weise.

Jede Erläuterung zu diesem Thema wäre hilfreich.

Danke!

Antwort

1

Hier ist, wie git Werke:

Wenn Sie einen Zweig aus der Ferne holen, sagen branchA und Kasse zu diesem Zweig, der Sie suchen tatsächlich auf die lokale Kopie dieses Zweiges. Um genau zu sein, origin/branchA ist der Remote-Zweig, branchA ist Ihre lokale Kopie der Niederlassung. Jetzt in Ihrem Fall ist Ihre lokale Kopie tatsächlich in einem Remote-Computer, auf dem Sie FTP und Änderungen vornehmen. Sobald Sie in Ihrer aktuellen Zweigstelle eine Datei mit dem Namen file1 ändern, enthält Ihre nicht festgeschriebene Änderung file1.

Wenn viele Leute in dieselbe Maschine gehen, wird jeder diese Änderung sehen, denn so funktioniert ftp. Sobald Sie die Datei festgeschrieben und an origin/branchA gesendet haben, erhält Ihre entfernte Zweigstelle die festgeschriebene Änderung.

Im Gegensatz zu Svn, verlassen Sie sich nicht auf einen zentralen Server in Git. Jeder kloniert eine Kopie des Remote-Repos, nimmt Änderungen an der lokalen Kopie auf dem lokalen Computer vor und überträgt die Änderungen an Remote. Andere ziehen den Code auf einer kooperativen Basis, um die Änderungen zum Zeitpunkt der Notwendigkeit zu erhalten und ihre Änderungen hinzuzufügen usw. Deshalb wird es als dezentrale Versionskontrolle bezeichnet.

+0

Danke für die Erklärung. Obwohl ich weiß, dass Technologie wie Docker aus genau diesem Grund explodiert, ist es für mich immer noch schwierig zu verstehen, wie ein Entwickler an mehreren Projekten arbeiten kann und lokal bearbeitet werden soll - wie stellen Sie sicher, dass Ihre lokalen Einstellungen mit denen übereinstimmen Änderungen an? – Wes

+0

Wenn ein Benutzer Änderungen vornimmt und an Remote sendet, erhält der Remote-Zweig einen Commit voraus, und der lokale Zweig eines anderen Benutzers, der nicht über den Commit verfügt, ist ein Commit. Wenn er also versucht, seine Änderungen zu ändern, wird Git dies nicht akzeptieren. Aber einfach, er wird gebeten, vor dem Schieben zu ziehen. Auf diese Weise wird die Reihenfolge der Commits zu jedem Zeitpunkt sowohl in der Remote- als auch in allen lokalen Kopien in verschiedenen Dev-Maschinen beibehalten. – venkatKA