12 Stimmen

git und C++-Workflow, wie werden Objekt- und Archivdateien behandelt?

Ich verwende git als Schnittstelle zu einem SVN-Repository. Ich habe mehrere Git-Zweige für die verschiedenen Projekte, an denen ich arbeite.

Wenn ich jetzt mit "git checkout" von einem Zweig zu einem anderen wechsle, sind alle kompilierten ausführbaren Dateien und Objektdateien aus dem vorherigen Zweig noch vorhanden. Ich möchte, dass beim Wechsel von Zweig A nach B ein Baum mit allen Objektdateien und Binärdateien vom letzten Mal, als ich an Zweig B gearbeitet habe, entsteht.

Gibt es eine Möglichkeit, dies zu behandeln, ohne mehrere Git-Repositories zu erstellen?

Aktualisierung: Ich verstehe, dass ausführbare Dateien und Binärdateien nicht im Repository landen sollten. Ich bin etwas enttäuscht darüber, dass all die Verzweigungsfunktionen in Git für mich nutzlos sind, da sich herausstellt, dass ich für jede Verzweigung, die ich starten möchte, mein Proxy-Git-Repository klonen muss. Etwas, das ich bereits für SVN getan habe und hoffte, mit Git zu vermeiden. Natürlich muss ich das nicht tun, aber es würde dazu führen, dass ich die meiste Zeit nach dem Wechsel zwischen den Zweigen ein neues Make machen müsste (was nicht lustig ist).

1voto

greyfade Punkte 24134

Diese Dateien werden von Git oder Subversion nicht nachverfolgt, also werden sie in der Annahme, dass sie für Sie von Nutzen sind, in Ruhe gelassen.

Ich checke einfach in verschiedenen Verzeichnissen aus. Das erspart mir die Arbeit des Aufräumens.

0voto

Ein make clean sollte nicht notwendig sein, da Dateien, die zwischen verschiedenen Zweigen unterschiedlich sind, mit dem aktuellen Datum ausgecheckt werden!!!

Das bedeutet, dass, wenn Ihr Makefile korrekt ist, nur die Objektdateien, Bibliotheken und ausführbaren Dateien neu kompiliert werden, die sich durch den Checkout wirklich geändert haben. Das ist genau der Grund, warum ein Makefile überhaupt vorhanden ist.

Die Ausnahme ist, wenn Sie Compileroptionen oder sogar Compiler in verschiedenen Zweigen wechseln müssen. In diesem Fall ist wahrscheinlich git-new-workdir die beste Lösung.

0voto

masukomi Punkte 9245

Wenn die kompilierten ausführbaren Dateien Dateien sind, die eingecheckt wurden
dann ist das Problem mit git stash gelöst.

[compile]
git stash save "first branch"
git checkout other_branch
[Fiddle with your code]
[compile]
git stash save "second branch"
git checkout first_branch
git stash apply [whatever index your "first branch" stash has]
# alternatively git stash pop [whatever index...]

Wenn die kompilierten ausführbaren Dateien Dateien sind, die nicht eingecheckt wurden und werden
dann fügen Sie sie einfach zu .gitignore hinzu

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X