Ausgehend von einem SVN-Hintergrund ist es eines der schwierigsten Dinge, sich bei der Arbeit mit DVCS-Systemen daran zu gewöhnen, dass sie alle unverbindliche Änderungen als tickende Zeitbombe betrachten.
Wenn Sie in Mercurial versuchen, Änderungen abzurufen, und Sie nicht festgeschriebene Änderungen in Ihrer Arbeitskopie haben, müssen Sie durch die Rahmen springen, um die eingehenden Änderungen in zusammenzuführen. Versuchen Sie, Zweige zu wechseln? Es wird Sie zwingen, alles zurückzustellen, und dann müssen Sie alles am anderen Ende sofort aus dem Regal nehmen. (SVN hat mit keinem dieser Szenarien Probleme.)
Git ist ungefähr der gleiche Weg. Ich arbeite Seite an Seite mit einem anderen Entwickler an einem Projekt und habe nur versucht, einen seiner Commits in meine Gabel zu stecken. Es hat sich geweigert, mich zuzulassen, weil ich Änderungen an meiner Arbeitskopie in völlig anderen Dateien als den in seinem Commit geänderten nicht festgeschrieben habe. Es gibt nicht einmal eine Zusammenführungsoption. anscheinend muss ich zuerst meine Änderungen verstauen!
Wenn eine Person etwas völlig harmloses mit solch äußerster Vorsicht behandeln würde, würde ich es eine "Phobie" nennen, eine irrationale Angst, die als psychische Störung angesehen werden sollte. Aber Git und Mercurial wurden von zwei verschiedenen Teams intelligenter, rationaler Entwickler entworfen, daher muss ich mich fragen, ob sie etwas wissen, von dem ich nichts weiß.
Gibt es einen technischen Grund, der diese Haltung gegenüber unverbindlichen Änderungen rechtfertigt? Und wenn ja, warum scheint das fragliche Problem nur bei DVCS zu bestehen?