Wie kann ich ein beschädigtes Git-Repository reparieren?

104

Ich habe versucht, mein Repository, das ich in meinem Ubuntu-Ordner habe, auf einen neuen Computer zu klonen, und habe Folgendes erhalten:

christopher@christopher-laptop:~/source/personal$ git clone ~/Ubuntu\ One\ Side\ Work/projects.git/
Cloning into 'projects'...
done.
fatal: unable to read tree 29a422c19251aeaeb907175e9b3219a9bed6c616
christopher@christopher-laptop:~/source/personal$ 

Also habe ich versucht, mir die vielen anderen Fragen wie diese anzusehen, die hier gestellt wurden, und die meisten sagen, sie sollen rennen, git fsck --fullund dann bekomme ich das, wenn ich das versuche.

christopher@christopher-laptop:~/Ubuntu One Side Work/projects.git$ git fsck --full
Checking object directories: 100% (256/256), done.
Checking objects: 100% (447/447), done.
broken link from  commit 235ae1f48701d577d71ebd430344a159e5ba4881
              to  commit 984c11abfc9c2839b386f29c574d9e03383fa589
broken link from    tree 632a9cf0ef9fccea08438b574e2f1c954f4ff08b
              to    blob 25a742dff0a403b2b3884f2ffddf63eb45721fac
broken link from    tree 632a9cf0ef9fccea08438b574e2f1c954f4ff08b
              to    blob dd4e97e22e159a585b20e21028f964827d5afa4e
broken link from    tree 632a9cf0ef9fccea08438b574e2f1c954f4ff08b
              to    tree 29a422c19251aeaeb907175e9b3219a9bed6c616
broken link from    tree 632a9cf0ef9fccea08438b574e2f1c954f4ff08b
              to    tree 8084e8e04d510cc28321f30a9646477cc50c235c
broken link from    tree 774b5b4157b4caae1c6cad96c8eaf5d4eba2c628
              to    blob a0daa0c1567b55d8de2b4d7a3bc010f58c047eab
broken link from    tree 774b5b4157b4caae1c6cad96c8eaf5d4eba2c628
              to    blob e9052d35bfb6d30065b206fc43f4200a04d5281b
broken link from    tree 774b5b4157b4caae1c6cad96c8eaf5d4eba2c628
              to    blob 1a3a5e4dd2502ac121c22f743c4250e254a94eeb
broken link from    tree 4aa336dc1a5838e8918e03b85580069d83f4ad09
              to    tree 8cc55ec952dc192a233e062201d1e7e873ac3db0
broken link from    tree e5674a91a53e15575a1f3bf5786bc5cc719fb483
              to    blob 4a994e1e7bb7ce28dcec98bad48b9a891d7dec51
broken link from    tree e5674a91a53e15575a1f3bf5786bc5cc719fb483
              to    blob ac033bf9dc846101320c96a5ce8aceb8c96ec098
broken link from    tree 252ab84542264e1589576b6ee51e7a31e580a0e2
              to    tree 2069041cd5950e529e2991d37b7290ec021d90d4
broken link from    tree 2d4964aa4d4f5d8c7228518ce72ef6a63f820c6d
              to    blob d83690e1b9a6bdd8a08754b38231799acefcb2ab
broken link from    tree c7192e82fc581bd6448bda1a25e8729bdac5f4ff
              to    blob 30d54d47ae82add1917ca173d42e58b396df580b
broken link from    tree 7c66306901fc71389623286936cef172d4ffe408
              to    blob bc7e05d705401273b1df4e939de0f540597c0931
broken link from    tree 0940f5fd227d4c84d6e6749d872db50a4522ae3a
              to    tree 923767594ac22023e824948d65622fe5b407d1a1
broken link from    tree 8eadcd2a971e8357d24f0d80f993d2963452209f
              to    blob 2598bde3dc8cb80ee49510b8159344004b88645f
broken link from    tree ffa302dd0d969172ef23caeefe856ab2f57a4e4d
              to    blob d6925fa431be1ac585bf9a481e98f75107a6e6fb
broken link from    tree 7045b8870a49ce30a2027537a96d73d162bda773
              to    blob 25688652dea26f61f576ca1b52b9d1a18fbfd01d
broken link from    tree 37e4705d34bd440ce681ae32ae9a180a13256d72
              to    tree 246f564d4cee53339b8a4244f3173b61caa518eb
missing blob d6925fa431be1ac585bf9a481e98f75107a6e6fb
missing blob ac033bf9dc846101320c96a5ce8aceb8c96ec098
missing tree 29a422c19251aeaeb907175e9b3219a9bed6c616
missing tree 8084e8e04d510cc28321f30a9646477cc50c235c
missing blob 30d54d47ae82add1917ca173d42e58b396df580b
missing tree 8cc55ec952dc192a233e062201d1e7e873ac3db0
missing blob e9052d35bfb6d30065b206fc43f4200a04d5281b
dangling tree 4b26e95db542c72ac4a22ec25abe38fb2de79752
missing blob d83690e1b9a6bdd8a08754b38231799acefcb2ab
missing blob 25a742dff0a403b2b3884f2ffddf63eb45721fac
missing tree 923767594ac22023e824948d65622fe5b407d1a1
missing blob 25688652dea26f61f576ca1b52b9d1a18fbfd01d
missing blob 2598bde3dc8cb80ee49510b8159344004b88645f
dangling tree 3a683869f1bb0c1634de75700c316b3b36570dbd
dangling blob 4098d30843380d798a811f1aa9a02994f0dbbb27
missing tree 2069041cd5950e529e2991d37b7290ec021d90d4
missing blob 4a994e1e7bb7ce28dcec98bad48b9a891d7dec51
missing blob 1a3a5e4dd2502ac121c22f743c4250e254a94eeb
missing blob a0daa0c1567b55d8de2b4d7a3bc010f58c047eab
dangling tree 6c7b5162aa7a303fa3fe8dc393c5da564e309521
missing commit 984c11abfc9c2839b386f29c574d9e03383fa589
missing blob bc7e05d705401273b1df4e939de0f540597c0931
missing blob dd4e97e22e159a585b20e21028f964827d5afa4e
missing tree 246f564d4cee53339b8a4244f3173b61caa518eb
dangling commit a01f5c1e5315dc837203d6dee00d3493be9c5db9

Das sieht echt schlecht aus. Wenn ich ein mache, git log | headbekomme ich das

christopher@christopher-laptop:~/Ubuntu One Side Work/projects.git$ git log | head
error: Could not read 984c11abfc9c2839b386f29c574d9e03383fa589
fatal: Failed to traverse parents of commit 235ae1f48701d577d71ebd430344a159e5ba4881
commit 2fb0d2d0643b445440f01b164f11ee9ee71fca48
Author: christopher <[email protected]>
Date:   Wed Aug 7 15:51:42 2013 -0400

    finishing chapter 7

Andere Fragen hier haben gesagt, um zu schauen ./git/refs/heads/master. Es ist ein nacktes Repo und refs/heads/existiert, existiert aber refs/heads/masternicht. KOPF im nackten Repo sagt es ref: refs/heads/masterallerdings

packed-refs sagt das aber

# pack-refs with: peeled 
2fb0d2d0643b445440f01b164f11ee9ee71fca48 refs/heads/master

Wieder andere Fragen haben vorgeschlagen, ausgeführt zu werden, git reflogund es wird keine Ausgabe angezeigt, wenn ich das ausführe.

Ich habe also wirklich keine Ahnung, was ich hier tun soll. Welche Strategie sollte verfolgt werden? Ist es möglich, den Kopf auf dieses letzte Commit am 7. August zurückzusetzen?

BEARBEITEN:

Wenn Sie ein Git-Protokoll erstellen und zum Ende der Bildschirmausgabe gehen, wird Folgendes angezeigt:

commit 996e03b949aea176238e3c7a8452700bbb987ac9
Author: christopher <christopher@christopher>
Date:   Wed Jul 3 23:00:44 2013 -0400

    many many changes
error: Could not read 984c11abfc9c2839b386f29c574d9e03383fa589
fatal: Failed to traverse parents of commit 235ae1f48701d577d71ebd430344a159e5ba4881

Das scheint zu verhindern, dass die Git-Pflaume funktioniert

TinyGrasshopper
quelle
3
Dies ist keine große Hilfe, aber: Speichern Sie Git-Repos nicht in Dropbox oder anderen Synchronisierungsdiensten. Git ist nicht dafür ausgelegt, ein anderes Programm zu handhaben, das Dateien zufällig sperrt und neu schreibt, während es etwas anderes tut.
Millimoose
Siehe auch
Todd A. Jacobs
2
Fast alle Antworten gehen davon aus, dass man einfach von einem unbestechlichen entfernten Ursprung aus neu klonen kann. Hier ist das Problem ... Was ist, wenn Sie sind der Ursprung, und Sie sind beschädigt? Richtig. Also, hier: git-repairist ein Programm, das ausgeführt wird git fsckund sich sehr bemüht, alle auftretenden Probleme zu beheben. git-repair.branchable.com Es scheint ziemlich fähig zu sein, und obwohl Sie möglicherweise Objekte aus einem Backup kopieren müssen (wenn Sie können!) (Sie haben ein Backup, oder?), sollte es Ihnen viel Zeit sparen Rette alles, was es kann und überlasse dir die eigentliche Arbeit, nicht viele automatisierbare Aufgaben. Keine Zugehörigkeit usw.
underscore_d

Antworten:

109

Als Alternative zur letzten Option von CodeGnome können Sie, wenn nur das lokale Repo beschädigt ist und Sie die URL zur Fernbedienung kennen, diese so einstellen .git, dass sie ${url}mit der Fernbedienung übereinstimmt (durch die Remote-URL ersetzen ):

mv -v .git .git_old &&            # remove old git
git init &&                       # initialise new repo
git remote add origin "${url}" && # link to old repo
git fetch &&                      # get old history
git reset origin/master --mixed   # force update to old history

Dies lässt Ihren Arbeitsbaum intakt und wirkt sich nur auf die Buchhaltung von git aus.
Zu diesem Zweck habe ich kürzlich auch ein Bash-Skript erstellt (Anhang A), das ein wenig Sicherheit für diesen Vorgang bietet.

Hinweis:

Wenn Ihr Repo Submodule hat, wird dieser Prozess sie irgendwie durcheinander bringen, und die einzige Lösung, die ich bisher gefunden habe, besteht darin, sie zu löschen und dann zu verwenden git submodule update --init(oder das Repo erneut zu klonen, aber das scheint zu drastisch).

Anhang A - Vollständiges Skript

#!/bin/bash

# Author: Zoey Llewellyn "Zobean" Hewll
#
# Usage: fix-git [REMOTE-URL]
#   Must be run from the root directory of the repository.
#   If a remote is not supplied, it will be read from .git/config
# 
# For when you have a corrupted local repo, but a trusted remote.
# This script replaces all your history with that of the remote.
# If there is a .git, it is backed up as .git_old, removing the last backup.
# This does not affect your working tree.
#
# This does not currently work with submodules!
# This will abort if a suspected submodule is found.
# You will have to delete them first
# and re-clone them after (with `git submodule update --init`)
#
# Error codes:
# 1: If a url is not supplied, and one cannot be read from .git/config
# 4: If the url cannot be reached
# 5: If a git submodule is detected


if [[ "$(find -name .git -not -path ./.git | wc -l)" -gt 0 ]] ;
then
    echo "It looks like this repo uses submodules" >&2
    echo "You will need to remove them before this script can safely execute" >&2
    echo "Then use \`git submodule update --init\` to re-clone them" >&2
    exit 5
fi

if [[ $# -ge 1 ]] ;
then
    url="$1"
else
    if ! url="$(git config --local --get remote.origin.url)" ;
    then
        echo "Unable to find remote 'origin': missing in '.git/config'" >&2
        exit 1
    fi
fi
url_base="$(echo "${url}" | sed -E 's;^([^/]*://)?([^/]*)(/.*)?$;\2;')"
echo "Attempting to access ${url_base} before continuing"
if ! wget -p "${url_base}" -O /dev/null -q --dns-timeout=5 --connect-timeout=5 ;
then
    echo "Unable to reach ${url_base}: Aborting before any damage is done" >&2
    exit 4
fi

echo
echo "This operation will replace the local repo with the remote at:"
echo "${url}"
echo
echo "This will completely rewrite history,"
echo "but will leave your working tree intact"
echo -n "Are you sure? (y/N): "

read confirm
if ! [ -t 0 ] ; # i'm open in a pipe
then
    # print the piped input
    echo "${confirm}"
fi
if echo "${confirm}"|grep -Eq "[Yy]+[EeSs]*" ; # it looks like a yes
then
    if [[ -e .git ]] ;
    then
        # remove old backup
        rm -vrf .git_old | tail -n 1 &&
        # backup .git iff it exists
        mv -v .git .git_old
    fi &&
    git init &&
    git remote add origin "${url}" &&
    git config --local --get remote.origin.url | sed 's/^/Added remote origin at /' &&
    git fetch &&
    git reset origin/master --mixed
else
    echo "Aborting without doing anything"
fi
Zoey Hewll
quelle
3
Spektakulär, ich habe ein Backup meines Projekts erstellt und Ihre Lösung ausprobiert. Git war irgendwie ziemlich stark beschädigt. Ich habe Ihre Lösung ausprobiert und es hat perfekt funktioniert. Vielen Dank.
Kequc
2
Ich habe das Skript nicht verwendet, da ich unter Windows bin, aber diese Befehle haben nur meinen .git-Ordner gespeichert, in dem für jedes Speichern einer nachverfolgten Datei ein neues Repo angezeigt wurde (also hatte ich ungefähr 50 Master-Repositorys, bevor ich dieses Update ausprobierte )
Moped
1
Danach konnte ich meinen .gitOrdner wiederherstellen . Ich fand git reset origin/master --hardes nützlicher als --mixed.
Felipe Alvarez
1
Toll. Falls es Submudule gibt, die keine Änderungen enthalten, entfernen Sie diese zuerst und führen Sie dann das Submodul init aus, um sie erneut abzurufen.
Herm
1
@ w33haa Leider ist diese Lösung nur für den Fall anwendbar, dass Sie über ein gültiges und zugängliches Remote-Repository verfügen. Einige der anderen Antworten beziehen sich auf den Fall einer unzugänglichen oder beschädigten Fernbedienung.
Zoey Hewll
53

TL; DR

Git speichert die Geschichte nicht so, wie Sie denken. Es berechnet den Verlauf zur Laufzeit basierend auf einer Ahnenkette. Wenn in Ihrer Abstammung Blobs, Bäume oder Commits fehlen, können Sie Ihren Verlauf möglicherweise nicht vollständig wiederherstellen.

Stellen Sie fehlende Objekte aus Backups wieder her

Das erste, was Sie versuchen können, ist, die fehlenden Elemente aus der Sicherung wiederherzustellen. Überprüfen Sie beispielsweise, ob eine Sicherung des Commits als gespeichert ist .git/objects/98/4c11abfc9c2839b386f29c574d9e03383fa589. Wenn ja, können Sie es wiederherstellen.

Möglicherweise möchten Sie auch die Objekte git-verify-pack und git-unpack untersuchen, falls das Commit bereits gepackt wurde und Sie es für die Zwecke der Repository-Operation an ein loses Objekt zurückgeben möchten.

Chirurgische resektion

Wenn Sie die fehlenden Elemente aus einer Sicherung nicht ersetzen können, können Sie möglicherweise den fehlenden Verlauf entfernen. Beispielsweise können Sie Ihren Verlauf oder Ihr Reflog untersuchen, um einen Vorfahren von Commit 984c11abfc9c2839b386f29c574d9e03383fa589 zu finden. Wenn Sie eine intakte finden, dann:

  1. Kopieren Sie Ihr Git-Arbeitsverzeichnis in ein temporäres Verzeichnis.
  2. Führen Sie einen Hard-Reset für das unverfälschte Commit durch.
  3. Kopieren Sie Ihre aktuellen Dateien zurück in den Git-Arbeitsbaum, aber stellen Sie sicher, dass Sie den .git-Ordner nicht zurück kopieren!
  4. Übernehmen Sie den aktuellen Arbeitsbaum und geben Sie Ihr Bestes, um ihn als gequetschten Commit aller fehlenden Historien zu behandeln.

Wenn es funktioniert, verlieren Sie natürlich die dazwischenliegende Geschichte. Wenn Sie zu diesem Zeitpunkt über ein Arbeitsverlaufsprotokoll verfügen, empfiehlt es sich, den Verlauf und die Reflogs aller nicht erreichbaren Commits und Objekte zu bereinigen.

Vollständige Wiederherstellung und Neuinitialisierung

Wenn Ihr Repository immer noch kaputt ist, haben Sie hoffentlich eine unbeschädigte Sicherung oder einen nicht beschädigten Klon, von dem Sie wiederherstellen können. Wenn nicht, aber Ihr aktuelles Arbeitsverzeichnis gültige Dateien enthält, können Sie Git jederzeit neu initialisieren. Beispielsweise:

rm -rf .git
git init
git add .
git commit -m 'Re-initialize repository without old history.'

Es ist drastisch, aber es kann Ihre einzige Option sein, wenn Ihr Repository-Verlauf wirklich nicht wiederherstellbar ist. YMMV.

Todd A. Jacobs
quelle
3
Ich bin gerade auf dieses Problem gestoßen und wollte darauf hinweisen, da es nicht in Ihrer Antwort enthalten ist, aber mein Problem war nur ein einfaches Berechtigungsproblem. error: Could not read abcdeMein Repo wird von GitLab verwaltet und es wurden Dateien erstellt, die mein Benutzer nicht lesen konnte. Ein sudo chownspäter und ich war gut zu gehen.
Aust
5

Hier ist ein Skript (Bash), um die erste Lösung von @CodeGnome zu automatisieren, die aus einer Sicherung wiederhergestellt werden soll (auf der obersten Ebene des beschädigten Repos ausführen). Die Sicherung muss nicht vollständig sein, sondern nur die fehlenden Objekte enthalten.

git fsck 2>&1 | grep -e missing -e invalid | awk '{print $NF}' | sort -u |
    while read entry; do
        mkdir -p .git/objects/${entry:0:2}
        cp ${BACKUP}/objects/${entry:0:2}/${entry:2} .git/objects/${entry:0:2}/${entry:2}
    done
Campkeith
quelle
5

Wenn Sie eine Fernbedienung konfiguriert haben und es Ihnen egal ist, nicht gepushten Code zu verlieren, können Sie Folgendes tun:

git fetch && git reset --hard
user5169648
quelle
2
In einigen Fällen können Sie mit git nicht abrufen, wenn bestimmte Objekte beschädigt sind. Daher müssen Sie Ihr Repo zuerst neu initialisieren.
Zoey Hewll
Das hat bei mir nicht funktioniert, als ich hatte fatal: pack has 13 unresolved deltas.
Artem Russakovskii
4

Bevor Sie die auf dieser Seite beschriebenen Korrekturen ausprobieren, sollten Sie eine Kopie Ihres Repos erstellen und nur an dieser Kopie arbeiten. Wenn Sie das Problem am Ende beheben können, vergleichen Sie es mit dem Original, um sicherzustellen, dass Sie während des Reparaturvorgangs keine Datei verloren haben.

Eine andere Alternative, die für mich funktioniert hat, war das Zurücksetzen des Git-Kopfes und des Index auf den vorherigen Zustand mit:

git reset --keep

Sie können dies auch manuell tun, indem Sie die Git-GUI öffnen, die einzelnen "Staged Changes" auswählen und auf "Unstage the change" klicken. Wenn alles nicht bereitgestellt ist, sollten Sie jetzt in der Lage sein, Ihre Datenbank zu komprimieren, Ihre Datenbank zu überprüfen und ein Commit durchzuführen.

Ich habe auch die folgenden Befehle ausprobiert, aber sie haben bei mir nicht funktioniert, aber möglicherweise bei Ihnen, je nachdem, welches Problem Sie genau haben:

git reset --mixed
git fsck --full
git gc --auto
git prune --expire now
git reflog --all

Um dieses Problem der Synchronisierung zu vermeiden, das Ihren Git-Index beschädigt (was bei DropBox, SpiderOak oder einer anderen Cloud-Festplatte der Fall sein kann), können Sie Folgendes tun:

  1. Konvertieren Sie Ihre .gitOrdner in eine einzige „Bündel“ git - Datei unter Verwendung von : git bundle create my_repo.git --all, dann sollte es nach wie vor nur die gleiche Arbeit, aber da alles in einer einzigen Datei ist , werden Sie sich nicht riskieren , die Synchronisation mehr Ihre git Repo zu beschädigen.
  2. Sofortige Synchronisierung deaktivieren: Mit SpiderOak können Sie die Zeitplanung für die Überprüfung von Änderungen auf "automatisch" setzen (was bedeutet, dass Dateiänderungen dank der Betriebssystembenachrichtigungen so schnell wie möglich überwacht werden). Dies ist schlecht, da Änderungen sofort hochgeladen werden, sobald Sie eine Änderung vornehmen, und dann die Änderung heruntergeladen werden, sodass möglicherweise die letzten Änderungen gelöscht werden, die Sie gerade vorgenommen haben. Eine Lösung zur Behebung dieses Problems besteht darin, die Verzögerungszeit für die Änderungsüberwachung auf 5 Minuten oder mehr festzulegen. Dies behebt auch Probleme beim sofortigen Speichern von Notizenanwendungen (z. B. Notepad ++).
gaborous
quelle
3

Wenn Sie verzweifelt sind, können Sie dies versuchen:

git clone ssh://[email protected]/path/to/project destination --depth=1

Es wird Ihre Daten erhalten, aber Sie werden den Verlauf verlieren. Ich ging mit Versuch und Irrtum auf mein Repo und --depth=10arbeitete, --depth=50gab mir aber Fehler.

alberto56
quelle
3

Ich habe versucht, die Objektdateien mit 0 Bytes zu entfernen und sie erneut von der Fernbedienung abzurufen, und es hat funktioniert:

find . -type f -size 0 -exec mv {} /tmp \;
git fetch

Es holte die fehlenden Objekte von der Fernbedienung und ermöglichte mir, weiter zu arbeiten, ohne das gesamte Repo neu zu initialisieren.

AlejandroVD
quelle
2

Ich hatte das gleiche Problem, daher habe ich den Ordner ".git" durch eine gesicherte Version ersetzt und es funktionierte immer noch nicht, da die .gitconfig-Datei beschädigt war. Das BSOD auf meinem Laptop hat es beschädigt. Ich habe es durch den folgenden Code ersetzt und Sourcetree hat alle meine Repositorys wiederhergestellt.

[user]
name = *your username*
email = *your email address*
[core]
autocrlf = true
excludesfile = C:\\Users\\*user name*\\Documents\\gitignore_global.txt

Ich weiß nicht, ob dies jemandem helfen wird, aber dies ist nur eine andere Lösung, die für mich funktioniert hat.

AspiringCanadian
quelle
2

Entfernen Sie den Index und setzen Sie ihn zurück

rm -f .git/index
git reset
Ashfaq
quelle
2

Ich habe in letzter Zeit ähnliche Probleme mit der Git-Version 2.7.1 unter Ubuntu 18.04.3 festgestellt. So habe ich es gemacht:

sudo apt install git-repair
git-repair  # fix a broken git repository
or
git-repair --force  # force repair, even if data is lost
git fsck  # to verify it was fixed

Die meiste Zeit war der Wiederherstellungsprozess erfolgreich

Jonathan L.
quelle
Git-Reparatur ist in der Tat ein sehr nützliches Werkzeug. Es hat mir geholfen, ein Repository wiederherzustellen. Das Problem bei den meisten anderen Methoden ist, dass Sie Ihre Vorräte verlieren, was für mich keine Option war.
Jan Rychter
1

In meinem Fall habe ich das Repository aus dem Quellcode erstellt, der sich bereits in meinem PC befindet, und dieser Fehler ist aufgetreten. Ich habe den .git Ordner gelöscht und alles wieder gemacht und es hat funktioniert :)

Carolina
quelle
1

Ich wollte dies als Kommentar unter Zoey Hewils großartiger Antwort hinzufügen oben , aber ich habe derzeit nicht genug Repräsentanten, um dies zu tun, also muss ich es hier hinzufügen und ihre Arbeit : P.

Wenn Sie Poshgit verwenden und sich außergewöhnlich faul fühlen , können Sie Folgendes verwenden, um Ihre URL automatisch aus Ihrer Git-Konfiguration zu extrahieren und die Arbeit noch einfacher zu machen. Standard-Vorsichtsmaßnahmen gelten für das Testen auf einer Kopie / das Sichern Ihres lokalen Repos zuerst, falls es in Ihrem Gesicht explodiert.

$config = get-content .git\config
$url = $config -match " url = (?<content>.*)"
$url = $url.trim().Substring(6)
$url

move-item -v .git .git_old;
git init;
git remote add origin "$url";
git fetch;
git reset origin/master --mixed
Gesthemene
quelle
0

Schneller Weg, wenn Sie Änderungen an Ihrem aktuellen Projekt vorgenommen haben und diese nicht verlieren möchten, verschieben Sie Ihr aktuelles Projekt an einen anderen Ort, klonen Sie das Projekt von github in diesen Ordner und nehmen Sie einige Änderungen vor, um erneut zu bestätigen. Oder löschen Sie einfach das Repo und klonen Sie es erneut, es hat bei mir funktioniert.

Gewissheit
quelle
-2

Dieser Befehl hat bei mir funktioniert:

$ git reset --mixed 
Kein Bedauern
quelle