2017-04-02 5 views
-1

Lets sagen, ich habe 20 Commits für ein Projekt in Github. Nach 20 Commits habe ich das Gefühl, dass mein Programm langsam läuft. Ich möchte daher zurückgehen und testen, wenn die Programme langsamer werden. Ich kann einfach nicht herausfinden, welchen Befehl ich verwenden muss, um mein lokales Laufwerk mit einer bestimmten Commit-ID von Github zu synchronisieren. Bitte helfen Sie, ich weiß, das ist wahrscheinlich sehr einfach. WieWiederherstellung zu einem früheren Commit in Git Shell

Ive versucht git Kasse, aber dies erzeugt eine Niederlassung oder etwas

git checkout <SHA HASH> 
+0

'git checkout HEAD ~ 20' – 4c74356b41

+2

Eigentlich' git checkout 'ist ** genau **, was Sie tun möchten. Hat das nicht funktioniert? –

+0

Dies machte einen neuen Zweig, mit dem Commit als Kopf. Dann hatte ich nur die Möglichkeit, dies auf dem github-Server zu veröffentlichen. Ich möchte keine temporäre Verzweigung machen, jedes Mal, wenn ich in der Zeit zurückgehen muss, um zu sehen, was sich geändert hat – TobiasKnudsen

Antwort

0

Eigentlich kann man git checkout verwenden wie Sie versucht. Solange Sie nicht die Option -b verwenden, erstellt dies keine neue Verzweigung, aber Sie verlassen eine HEAD (d. H. HEAD Punkte zu einem bestimmten Commit, nicht zu einer Verzweigung), also genau das, was Sie wollen.

Wenn Sie nicht einen Commit nach dem anderen testen möchten, um den Punkt zu finden, an dem es langsamer wird, sollten Sie stattdessen git bisect verwenden, was genau Ihren Anwendungsfall unterstützt, um einen bestimmten Commit zu finden, an dem sich etwas ändert. Dies könnte das Commit sein, bei dem ein Bug eingeführt wurde, oder das Commit, bei dem etwas langsam wurde oder was auch immer. Es unterstützt dies durch einen binären Suchalgorithmus, was bedeutet, dass Sie einen Commit geben, bei dem das Projekt langsam war, und ein Commit, bei dem das Projekt schnell war, dann prüft Git die Mitte zwischen ihnen. Dann sagen Sie Git, ob dieses Commit langsam oder schnell ist und so weiter, bis Git Ihnen sagt, dass es das erste Commit gefunden hat, bei dem das Projekt basierend auf Ihrer Eingabe langsam wurde. In der Regel benötigen Sie weniger Versuche, das betreffende Commit zu finden, als wenn Sie ein Commit nach dem anderen testen.

Ihr Befehl wäre etwas wie git bisect start --term-old=fast --term-new=slow @ @~20, wenn Sie wissen, es ist langsam bei der aktuellen Commit und war schnell vor 20 commits. Dann, nach dem Testen des ausgecheckten Codes, rufen Sie git bisect slow oder git bisect fast an, bis Sie das betreffende Commit gefunden haben. Wenn Sie feststellen können, ob der Code langsam oder schnell programmatisch ist, können Sie sogar git bisect ein Skript geben, das bisect mit seinem Rückgabewert angibt, ob das Commit langsam, schnell oder unbestimmt ist (zB Build fehlschlägt, so langsam oder schnell kann nicht gemessen werden) und Git wird automatisch das gewünschte Commit ohne manuellen Eingriff finden.

Verwandte Themen