Ich habe zwei Dateien index.html
und template.html
. Ich zog die meisten index.html
in template.html
und jetzt git denkt , dass ich ein Umbenennungs tat , als ich beide Dateien hinzufügen. Ist es möglich, dies in bestimmten Fällen zu verhindern?
77
Antworten:
Es gibt eine "akzeptierte" Antwort, die jedoch keinen Hinweis auf die Beantwortung der Frage gibt.
Die richtige Antwort aus git-log (1) und git-diff (1) lautet:
quelle
Warum Git denkt, dass Ihre Dateien Kopien sind
Git verfolgt Inhalte , keine Dateinamen. Wenn zwei Dateien einen im Wesentlichen ähnlichen Inhalt haben, glaubt git, dass Sie die Datei kopiert oder umbenannt haben. Wenn Sie git-log (1) lesen, lernen Sie:
Angenommen, Ihr Ähnlichkeitsindex ist 100%, wird Git denken, dass dies eine Kopie ist. Am besten fügen Sie eine sinnvolle Protokollnachricht oder Notiz hinzu (siehe Git-Notizen (1) für weitere Informationen), um zu erklären, was los ist, wenn Sie nicht glauben, dass Git das Richtige tut.
Anpassen des Ähnlichkeitsindex
Sie können auch versuchen, die Werte anzupassen, die git verwendet, um etwas als Kopie oder Umbenennung zu betrachten. Das Handbuch für Git-Log (1) sagt:
Auch dies hilft Ihnen nicht, wenn die Dateien größtenteils ähnlich sind, aber Sie können diese Werte sicherlich verwenden, um zu optimieren, wie ähnlich sie sein müssen, um als Kopien oder Umbenennungen betrachtet zu werden. Ihr Kilometerstand kann variieren.
quelle
Wenn Sie sich kurz vor einem Commit befinden und "Sie fühlen sich schlecht, dass Git verrückt geworden ist", machen Sie einfach das Hinzufügen der mehrdeutigen Datei rückgängig, die Sie umbenannt haben, führen Sie ein Commit durch, fügen Sie die mehrdeutige Datei erneut hinzu und schreiben Sie Folgendes fest:
Das hat bei mir funktioniert.
Überprüfen Sie, ob keine Umbenennung stattgefunden hat:
"M" am Anfang bedeutet geändert, "R" bedeutet umbenannt. Beachten Sie, dass hier keine Umbenennung vorhanden ist.
quelle
git commit
das--amend
Flag haben, um die Änderung in dasselbe Commit aufzunehmen? Ich habe die Flagge hinzugefügt, und dies hat bei mir funktioniert, um die Umbenennungserkennung zu umgehen.Wenn Sie die Dateien A, B und C geändert haben; und gelöschte Datei D, E und F; Es besteht die Möglichkeit, dass Git denkt, D wird in A oder ähnliches umbenannt.
Die einfachste Lösung besteht darin, Dateiänderungen und -löschungen in zwei Commits aufzuteilen.
quelle
Um zu umgehen, dass Git denkt, es sei eine Umbenennung in "One" Commit.
git commit --amend
quelle
--edit
ich in den (neuen) Kommentaren in der Commit-Nachricht sehen, was meiner Meinung nach vor sich geht.