Git wird nicht zeigen keine Konflikte, und überschreiben ist meine lokale Kopie
Meine routine auf git hat sich immer sehr einfach:
git add -A
git commit -m 'the changes I made'
git pull
# resolve conflicts
git push
Jedoch, aus unbekannten Gründen, trotz der vielen Konflikte mit dem Ursprung, nach dem ziehen, ich bekomme keine Konflikte und ohne meine Erlaubnis erzwingen updates meiner lokalen Kopie. Etwas in dieser Richtung: '2 files changed, 2 insertions(+), 6 Löschvorgänge(-)'. Aber in meinem Fall, Konflikte sollten nicht aufgelöst werden, von der einfachen Zusammenführung und sollte eine manuelle Konfliktlösung von meiner Seite. Warum ist git nicht lassen mir tun die manuelle Konfliktlösung? Vielen Dank im Voraus!
Hinweis: keiner meiner git-Befehle haben die force-option -f
git
dies nicht tut (in meiner Erfahrung), also bist du wahrscheinlich vergessen einige scheinbar Unwesentliches Informationen. Haben Sie vielleicht eine buggy-stone-age-version vongit
? Was bedeutetgit --version
sagen Sie?- Versuchen Sie 'git fetch' und dann 'git merge' (lookup der Befehlszeile). "git pull") standardmäßig wird automatisch versucht 'Konflikt' Lösung und meiner Erfahrung nur nicht so tun, wenn es einen Konflikt gibt, dass der Algorithmus gibt auf.
- Aber diese unterscheidet sich nicht von dem, was
git pull
tut?
Du musst angemeldet sein, um einen Kommentar abzugeben.
git pull
ohne argument ist mehr oder weniger äquivalent zugit fetch && git merge origin/<upstream_branch>
. Durch die Verwendungpull
stattfetch
undmerge
ermöglichen Sie git Versuch der Zusammenführung in Ihrer Zweigstelle. Wenn das merge-Auftritt ohne Konflikte, Ihre lokale Aussehen "force aktualisiert", weil es in der Lage zu Sortieren, die Unterschiede zwischen der Fernbedienung können Sie die version der Dateien und Ihre eigenen, ohne Ihr zutun.Debuggen, was passiert ist irgendwie schwer, ohne zu sehen, Ihr code, aber versuchen Sie dies:
Die Ausgabe von
git diff
sollte man Ahnung in was passiert. Wenn Sie möchten, Folgen Sie es noch weiter versuchengit merge --no-commit origin/<branch>
, dann Fragegit diff --cached
. Das wird Ihnen genau zeigen, welche änderungen von git automatisch zusammengeführt, und sollte Ihnen ermöglichen, zu bestimmen, was was ist.Wenn
git
schafft es beheben Sie alle Konflikte, die während einergit pull
dann wird es einen commit. Dies bedeutet nicht, dass es zwangsläufig bekam die Dinge richtig. Wie Sie bemerkt haben, je nach den änderungen müssen Sie möglicherweise einige manuelle fix-ups.Um dies zu tun, nehmen Sie die Korrekturen in Ihrem Arbeits-Baum nach Ihr ziehen, dann Bühne (z.B. mit
git add -u
) und ändern Sie die merge-commit mitgit commit --amend
.Dadurch wird eine neue merge-commit, das ersetzt das, dass git ein, einschließlich Ihrer Korrekturen.
Können Sie schieben Sie dann die Ergebnisse, wie Sie normalerweise tun.