Am 01.07.2022 um 06:33 schrieb Jan Bruns:
> Als Beispielproblem wollte ich in einem selbst angelegten Projekt
> (Userzahl: nur ich, auf Dauer erwartete Branch-Anzahl: 1) von einem
> Server (hier gitlab) einen Tippfehler in einer Datei korrigieren.
Sobald ein Server im Spiel ist, gibt es mindestens zwei Branches: deinen
("master") und den des Servers ("origin/master").
> Wie ist das bspw. mit fetch/pull? Was davon kommt "svn update" am
> nächsten? Also ein automatisches update aller Dateien, ausser denen, an
> denen lokal bereits Änderungen vorgenommen wurden.
Während svn (und cvs) dir beim Update ungefragt und kommentarlos die
Dateien mit Merge-Konflikten zerschießen, musst du bei git immer
explizit sagen: jetzt möchte ich mergen, mit allen Konsequenzen (und der
Möglichkeit, abzubrechen und auf später zu verschieben).
Wenn du keine lokalen Änderungen hast, ist 'git pull' das Äquivalent zu
'svn update'.
Wenn du lokale Änderungen hast, kommt 'git stash; git pull; git stash
pop' dem am nächsten, wobei ich beim pull ganz stark die Option
'--rebase' bevorzugen würde, weil das eine schönere History produziert.
> Und wieso sieht commit zwar, daß ich eine Datei verändert habe, und ist
> dann aber zu faul sich mal zu überlegen, daß diese Änderung vllt. der
> Grund für's Aufrufen von commit gewesen sein könnte? Muss ich wirklich
> immer explizit die schon vorhandene, modifizierte Datei adden?
Ja, musst du. Es gibt aber zahllose Optionen, die dir das vereinfachen.
'man git commit' listet gleich am Anfang fünf Möglichkeiten.
Dafür bietet das Möglichkeiten, von denen man bei svn nur träumen kann
(z.B. 'git add -p').
Stefan