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?

War es hilfreich?

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.

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