Ich versuche, einen einfachen Checkout-Vorgang zwischen zwei Filialen zu implementieren. Der Code wird ohne Fehler ausgeführt.Checkout-Zweig mit libgit2
git_libgit2_init();
git_object *treeish = NULL;
git_checkout_options opts;
opts.checkout_strategy = GIT_CHECKOUT_SAFE;
/* branchName in this case is "master" */
handleError(git_revparse_single(&treeish, repo, branchName));
handleError(git_checkout_tree(repo, treeish, &opts));
git_object_free(treeish);
git_libgit2_shutdown();
Allerdings ist der Zweig nicht ändern, wenn ich es überprüfen git status
verwenden. Ich habe überprüft die 101 examples of libgit2 und es sagt:
git_checkout_options
nicht eigentlich sehr optional. Die Standardeinstellungen sind außerhalb einer kleinen Anzahl von Fällen nicht nützlich. Das beste Beispiel für diese ist checkout_strategy; Der Standardwert wirkt sich nicht auf den Arbeitsbaum aus. Wenn Sie also möchten, dass Ihre Kasse Dateien auscheckt, wählen Sie eine geeignete Strategie.
NONE
ist das Äquivalent eines Trockenlaufs; Keine Dateien werden ausgecheckt.
SAFE
ist ähnlich zugit checkout
; Unmodifizierte Dateien werden aktualisiert, und geänderte Dateien bleiben in Ruhe. Wenn eine Datei im alten HEAD vorhanden war, aber fehlt, gilt sie als gelöscht und wird nicht erstellt.
RECREATE_MISSING
ist ähnlich wiegit checkout-index
, oder was passiert nach einem Klon. Unmodifizierte Dateien werden aktualisiert und fehlende Dateien werden erstellt, aber Dateien mit Änderungen bleiben allein.
FORCE
ist vergleichbar mit ; Alle Änderungen werden überschrieben und alle fehlenden Dateien werden erstellt.
In meinem Fall teste ich es mit einem sehr kleinen Repo ohne unbeaufsichtigte Änderungen und ohne Konflikte zwischen diesen beiden Zweigen.
Was mache ich falsch? Ich habe erwartet, dass dieser Code etwas wie git checkout master
tut
Vielen Dank! Es funktioniert jetzt wie erwartet! Ich würde auch Ihre Antwort auf diese Frage hinzufügen (https://Stackoverflow.com/a/30469509/4942153), um den Fehler "ungültige Version 0 auf git_checkout_options" zu vermeiden –