2016-06-14 16 views
4

Wie könnte man versehentlich verschobene Repository von einem entfernten Ursprung entfernen?Revert git remote versehentlich verschobene Repository-Änderungen

Bevor Push dort wo zwei unabhängige Repositories mit eigener Geschichte z. Repo1

: Commit1 - Commit2 - Commit3 < --Head

repo2: Commit1 - Commit2 < --Head

Nach Zugabe von zusätzlichen Fern die zu repo2 Repo1 Repository verweist und alle repo2 Änderungen geschoben Fernbedienung Repo1, Repo1 beginnt mit der Suche wie folgt aus:

Repo1: Repo2Commit1 - Repo2Commit2 - --Repo1Commit1 - Repo1Commit2 - Repo1Commit3 < --Head

So scheint es, als ein Master-Zweig mit zwei unabhängigen begehen Geschichte Sequenzen, die nicht miteinander verwandt sind.

Zusätzlich git log zeigt nicht alle Commits, es zeigt nur Geschichte für die eine unabhängige Sequenz.

Gibt es eine Möglichkeit, Repo2-Commits von Repo1 zurückzusetzen. So wird es aussehen wie zuvor z:

Repo1: Commit1 - Commit2 - Commit3 < --Head

Irgendwelche Ideen?

How is it possible?

+0

Es ist unmöglich, dass ein Zweig * zwei unabhängige Commit-History-Sequenzen * hat. Mit welchem ​​Befehl hast du * alle Repo2-Änderungen auf Repo1 * übertragen? – fracz

+0

git remote hinzufügen ... git push ixi

+0

'git remote add' drückt nichts. Ich nehme an, Sie sind mit zwei Remote-Master-Filialen verwirrt? Wenn Sie die remo2-Fernbedienung nicht benötigen, versuchen Sie, sie mit 'git remote rm repo2' zu entfernen. – fracz

Antwort

0

Sie sehen zwei unabhängige Sequenzen, da die repos „unabhängige“ sind - nicht die gleiche Gabel.

git reflog auf Repo2 könnte in dieser Situation hilfreich sein.

klonen Sie einfach den Repo2 in ein anderes Verzeichnis und führen Sie git reflog dort. Sie werden sequentielle Änderungen am Repository sehen. Danach können Sie nur noch hart auf den gewünschten Commit zurücksetzen (der Verlauf im Reflog enthält den Hash jeder Änderung) und erzwingen, dass Sie ihn zurück zum entfernten Repo2 schieben.

Aber ich bin mir nicht sicher, was Sie erreichen wollten. Stellen Sie also sicher, dass Sie Backups von beiden Repositories erstellen.

+0

Repo2 ist gut und benötigt keine Änderungen, aber Repo1 tut es.git reflog zeigt Änderungen nur im lokalen Repository, aber das Problem ist, dass das Remote-Repository Repo1 einen zusätzlichen, nicht verwandten Verlauf hat, der in SourceTree sichtbar, aber im Web oder mit einem beliebigen Git-Befehl unsichtbar ist. Das Ziel ist also, die Repo2-Geschichte von Repo1 zu entfernen. Commit-Sequenzen sind auch nicht miteinander verknüpft und nicht miteinander verbunden. – ixi

+0

Und wie wäre es, wenn Sie ein neues Remote-Repository erstellen und versuchen, Ihre Filialen von Repo1 dorthin zu schieben? Es könnte das Problem lösen, es scheint, als ob Sie die nicht verwandte Geschichte nur lokal haben. Denken Sie nur daran, dass Sie nur die gewünschten Zweige drücken müssen und nicht "git push --all" ausführen. Bisher weiß ich nicht, wie man nicht verwandte Commits aus der Historie entfernen kann. –