Git-Pull Während Ignorieren Lokale Änderungen?
Frage
Gibt es eine Möglichkeit, eine git pull
zu tun, die alle lokalen Dateiänderungen ignoriert, ohne das Verzeichnis entfernt bläst und einen git clone
durchführen zu müssen?
Lösung
Wenn Sie meinen, wollen Sie die Pull lokalen Änderungen überschrieben werden soll, macht die Zusammenführung, als ob der Arbeits Baum sauber waren, nun ja, reinigen Sie den Arbeits Baum:
git reset --hard
git pull
Wenn es untracked lokale Dateien Sie git clean
sie zu entfernen, verwenden könnte. Verwenden git clean -f
zu untracked Dateien zu entfernen, -df
untracked Dateien und Verzeichnisse zu entfernen, und -xdf
untracked oder ignorierten Dateien oder Verzeichnisse zu entfernen.
Wenn auf der anderen Seite Sie irgendwie die lokalen Änderungen behalten möchten, würden Sie Stash verwenden sie zu verstecken, bevor ziehen, dann Neuanlage sie danach:
git stash
git pull
git stash pop
Ich glaube nicht, es macht keinen Sinn zu wörtlich ignorieren die Änderungen, obwohl -. Die Hälfte des Pull ist merge, und es braucht, um die engagierten Versionen von Inhalten mit den Versionen verschmelzen sie geholt
Andere Tipps
Für mich folgende gearbeitet:
(1) Zuerst alle Änderungen holen:
$ git fetch --all
(2) Dann die Master-Reset:
$ git reset --hard origin/master
(3) Pull / Update:
$ git pull
Der Befehl unten nicht funktioniert immer . Wenn Sie das tun nur:
$ git checkout thebranch
Already on 'thebranch'
Your branch and 'origin/thebranch' have diverged,
and have 23 and 7 different commits each, respectively.
$ git reset --hard
HEAD is now at b05f611 Here the commit message bla, bla
$ git pull
Auto-merging thefile1.c
CONFLICT (content): Merge conflict in thefile1.c
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
und so weiter ...
wirklich von vorn beginnen, das Herunterladen thebranch und überschreibt alle lokalen Änderungen, gerade tun:
$ git checkout thebranch
$ git reset --hard origin/thebranch
Das wird gut funktionieren.
$ git checkout thebranch
Already on 'thebranch'
Your branch and 'origin/thebranch' have diverged,
and have 23 and 7 different commits each, respectively.
$ git reset --hard origin/thebranch
HEAD is now at 7639058 Here commit message again...
$ git status
# On branch thebranch
nothing to commit (working directory clean)
$ git checkout thebranch
Already on 'thebranch'
Sie wollen nur einen Befehl, der genau das gleiche Ergebnis wie rm -rf local_repo && git clone remote_url
gibt, nicht wahr? Ich möchte auch diese Funktion. Ich frage mich, warum git nicht einen solchen Befehl nicht zur Verfügung stellen (wie git reclone
oder git sync
), ebenso wenig wie svn einen solchen Befehl (wie svn recheckout
oder svn sync
) zur Verfügung stellen.
Versuchen Sie den folgenden Befehl ein:
git reset --hard origin/master
git clean -fxd
git pull
git fetch --all && git reset --hard origin/master
Schauen Sie sich git stash alle lokalen Änderungen in eine „Stashdatei“ zu setzen und wieder auf die letzte begehen. An diesem Punkt können Sie Ihre stashed Änderungen zu übernehmen oder sie verwerfen.
Wenn Sie auf Linux sind:
git fetch
for file in `git diff origin/master..HEAD --name-only`; do rm -f "$file"; done
git pull
Die for-Schleife löscht alle Dateien aufgespürt, die in der lokalen Repo geändert werden, so git pull
ohne Probleme funktionieren.
Das schönste daran ist, dass nur die verfolgten Dateien durch die Dateien im Repo überschrieben wird, werden alle anderen Dateien werden unberührt gelassen werden.
für mich gearbeitet
git fetch --all
git reset --hard origin/master
git pull origin master
mit der akzeptierten Antwort, die wir erhalten Konfliktfehler
Dadurch wird den aktuellen Zweig holen und versuchen, ein Vorspulen zu Master zu tun:
git fetch && git merge --ff-only origin/master
.gitignore
„Hinzufügen von unerwünschten Dateien zu .gitignore funktioniert, solange Sie nicht von Anfang an, sie zu jeder Filiale begangen haben.“
Sie können auch ausgeführt werden:
git update-Index --assume-unveränderter Dateiname
https://chamindac.blogspot.com /2017/07/ignoring-visual-studio-2017-created.html
ich in der Regel tun:
git checkout .
git pull
In den Stammordner des Projekts.