Frage

ich "zufällig" geschoben GitHub ein begehen.

Ist es möglich, diese verpflichten zu entfernen?

Ich will meine GitHub-Repository zurückkehren, wie es war, bevor diese begehen.

War es hilfreich?

Lösung

  

Hinweis: Sie alternative sehen unten in den Kommentaren git rebase -i -

     

git reset --soft HEAD^

Entfernen Sie zuerst auf Ihrem lokalen Repository commit. Sie können dies mit git rebase -i tun. Zum Beispiel, wenn es dein letzter ist zu begehen, können Sie git rebase -i HEAD~2 und löschen Sie die zweite Zeile im Editorfenster tun, das sich öffnet.

Dann zwingen Push-to-GitHub von git push origin +branchName --force mit

Siehe Git Magie Kapitel 5: Lehren der Geschichte - und Einige für weitere Informationen dann (dh, wenn Sie entfernen möchten ältere verpflichtet).

Oh, und wenn Ihr Arbeits Baum verschmutzt ist, müssen Sie zuerst eine git stash tun, und dann ein git stash apply nach.

Andere Tipps

git push -f origin HEAD^:master

Das sollte "rückgängig machen", um den Stoß.

Für eine leicht zurück, wenn es nur ein Fehler (vielleicht gegabelt Sie eine Repo, endete dann auf einen neuen, anstatt auf den ursprünglichen Hochschieben) hier ist eine andere Möglichkeit:

git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479

tauschen Offensichtlich in dieser Zahl für die Anzahl der Commit Sie zurückkehren möchten.

Alles da wird dann gelöscht, sobald Sie wieder drücken. Um dies zu tun, wäre der nächste Schritt sein:

git push --force
  1. git log commit Sie zurücksetzen wollen

  2. , um herauszufinden,
  3. git push origin +7f6d03:master während 7f6d03 ist die begehen, bevor die zu Unrecht begehen geschoben. + war für force push

Und das ist es.

Hier ist ein sehr guter Führer, die Ihr Problem löst, leicht und einfach!

Falls Sie die commit Änderungen nach dem Löschen halten:

Beachten Sie, dass diese Lösung funktioniert, wenn die entfernt werden begehen ist der letzte verpflichtet ein.


1 - Kopieren Sie die commit Referenz Sie aus dem Protokoll gehen zurück:

git log

2 - Zurücksetzen git die Commit-Referenz:

 git reset <commit_ref>

3 - Stash / speichert die lokalen Änderungen von den falschen begehen später zu verwenden, nachdem auf Remote drücken:

 git stash

4 - Drücken Sie die Änderungen an Remote-Repository (-f oder --force):

git push -f

5 - Holen Sie sich die gespeicherten Änderungen an lokalen Repository zurück:

git stash apply

7 - Falls Sie untracked / neue Dateien in den Änderungen haben, müssen Sie sie in den git bevor sie sich:

git add .

6 - Addieren Sie, was zusätzliche Änderungen, die Sie benötigen, dann begehen die benötigten Dateien (oder einen Punkt verwenden, anstatt jeden Dateinamen besagt, alle Dateien im lokalen Repository zu begehen ‚‘:

git commit -m "<new_commit_message>" <file1> <file2> ...

oder

git commit -m "<new_commit_message>" .

Sie müssen Ihre Cache löschen, um es vollständig ausgelöscht zu haben. Diese Hilfeseite von git wird Ihnen helfen. (Es hat mir geholfen) http://help.github.com/remove-sensitive-data/

Verwenden git revert Ihre Push für die Rück.

  

git-revert - Revert einige bestehende Commits

git revert [--edit | --no-edit] [-n] [-m parent-number] [-s] <commit>...
git revert --continue
git revert --quit
git revert --abort

Revert die Änderungen, die die entsprechenden Patches einführen, und einige neue Commits aufnehmen, die sie aufnehmen. Dies erfordert Ihre Arbeits Baum sauber zu sein (keine Änderungen des HEAD-Commit).

1. git reset HEAD^ --hard
2. git push origin -f

Diese Arbeit für mich.

das Commit von der Remote-Repository zu löschen:

 git push -f origin last_known_good_commit:branch_name

Um das Commit von Ihrem lokalen Repository löschen:

git reset --hard HEAD~1

Link

Löschen der letzten begehen, halten die Arbeit, die Sie getan haben:

git reset --soft HEAD~1

Löschen der letzten begehen, zerstört die Arbeit, die Sie getan haben:

git reset --hard HEAD~1

Hier finden Sie die ref spec des begehen Sie den Kopf Ihrer Niederlassung auf Github und verwenden Sie den folgenden Befehl sein wollen:

git push origin +[ref]:[branchName]

In Ihrem Fall, wenn Sie nur wieder herstellen wollen ein begehen, finden den Beginn der ref dafür verpflichten, sagen wir zum Beispiel ist es 7f6d03, und der Name der Branche Sie ändern möchten, zum Beispiel sagen, es ist Meister, und wie folgt vor:

git push origin +7f6d03:master

Die Plus-Zeichen als --force interpretiert, die notwendig sein werden, da Sie die Geschichte neu schreiben.

Hinweis

, dass jedes Mal, wenn Sie --force eine Festschreibung Sie möglicherweise Geschichte anderer Menschen umschreiben könnte, die Ihre Branche zusammenführen. Wenn Sie jedoch das Problem schnell zu fangen (bevor jemand anderes Ihre Niederlassung geht), werden Sie keine Probleme haben.

Sie müssen wissen, Ihre begehen Hash aus dem Commit Sie wiederherstellen möchten. Sie können es von einem GitHub URL wie erhalten: https://github.com/your -Organisation / Projekt / verpflichtet / Master

Lassen Sie uns sagen, dass die Hash aus dem Commit (wo Sie wollen zurück gehen) ist „99fb454“ (lange Version „99fb45413eb9ca4b3063e07b40402b136a8cf264“), dann alles, was Sie tun müssen, ist:

git reset --hard 99fb45413eb9ca4b3063e07b40402b136a8cf264
git push --force

Wenn Sie dies tun, weil Sie sensible Daten in einem Commit haben, hier die anderen Antworten verwenden, ist nicht sicher (subutux die Ausnahme, die ich erweitern werden).

Die Github Führer auf dieser ein externes Tool empfehlen, aber ich lieber mit dem eingebauten in einem.

Zum einen eine Sicherung Ihrer Repository machen . Dann gilt:

git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' \
--prune-empty --tag-name-filter cat -- --all

Nach diesem sicherstellen, dass das Repository in dem Zustand befindet, Sie wollen. Sie könnten gegen die Sicherung diff wollen.

Wenn Sie sicher, dass es richtig ist, dann:

#get rid of old unreferenced commits (including the data you want to remove)
git gc --prune=now
git push origin --force --all

Sie können die lokale Sicherung für eine Weile, nur für den Fall behalten möchten.

Führen Sie diesen Befehl auf Ihrem Terminal.

git reset HEAD~n

können Sie entfernen die letzten n verpflichtet von den lokalen Repo z.B. HEAD ~ 2. Fahren Sie mit Kraft git push auf Ihrem Repository.

git push -f origin <branch>

Hope, das hilft!

, um die Verzweigung zu bewahren und Struktur Verschmelzung ist wichtig, die --preserve-merges Option zu verwenden, wenn das Fütterungsmaterial zu tun:

git rebase --preserve-merges -i HEAD^^

Speichern Sie Ihre lokalen Änderungen zuerst irgendwo auf der Seite (Backup)

Sie können Ihre letzten Commits finden, wählen Sie dann einen Hash begehen, indem Sie auf „Kopieren Sie die volle SHA“ -Taste in die Zwischenablage zu senden.

Wenn Sie Ihre letzten Commit Hash ist, lassen Sie uns sagen g0834hg304gh3084gh (zum Beispiel)

Sie haben zu laufen:

git push origin +g0834hg304gh3084gh:master

Mit dem Hash, die Sie zuvor kopiert haben es die „HEAD“ Revision zu machen.

Fügen Sie den gewünschten lokalen Änderungen. Fertig;)

Für GitHub

  • Zurücksetzen des Commits (HARD) in Ihrem lokalen Repository
  • Erstellen Sie einen neuen Zweig
  • Drücken Sie den neuen Zweig
  • Löschen Altarm (Make neu als Standardzweig, wenn Sie den Master-Zweig löschen)

Wenn Sie interaktives Fütterungsmaterial entfernen tun,

git rebase -i HEAD~4

4 represents total number of commits to display count your commit andchange es dementsprechend

und löschen Sie verpflichten Sie aus der Liste wollen ...

Änderungen speichern von Strg + X (ubuntu) oder : wq (CentOS)

2. Methode, nicht zurückkehren,

git revert 29f4a2 #your commit ID

Diese zufällt spezifische begehen

Es ist nicht sehr gut, die Geschichte neu zu schreiben. Wenn wir git revert <commit_id> verwenden, erstellt es eine saubere Reverse-commit der genannten begehen ID.

Auf diese Weise wird die Geschichte nicht neu geschrieben, sondern weiß jeder, dass es ein Revert hat.

Hinzufügen / Entfernen von Dateien Dinge, wie Sie wollen zu bekommen:

git rm classdir
git add sourcedir

Dann ändern die commit:

git commit --amend

Das vorherige, fehlerhafte begehen wird bearbeitet werden, um den neuen Index Zustand zu reflektieren - mit anderen Worten, es wird sein, wie Sie nie den Fehler in erster Linie

gemacht

Beachten Sie, dass Sie sollten dies nur tun, wenn Sie noch nicht gedrückt haben. Wenn Sie gedrückt haben, dann werden Sie normalerweise nur ein Update zu begehen haben.

GitHub Desktop- können Sie einfach rechts klicken Sie auf die begehen und es zufällt, die eine neue erstellen verpflichten dass die Änderungen rückgängig gemacht.

Die versehentliche begehen immer noch in Ihrer Geschichte sein wird (was ein Problem sein kann, wenn zum Beispiel, haben Sie versehentlich einen API-Schlüssel oder Passwort verpflichtet), aber der Code wird rückgängig gemacht werden.

Dies ist die einfachste und einfachste Möglichkeit, die akzeptierte Antwort ist umfassender.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top