2012-09-11 9 views
94

Einige, wie .orig-Dateien in meinem Git-Repository während der Zusammenführung überprüft werden, die jetzt in geändertem und nicht verfolgtem Sektor angezeigt werden. Aber ich möchte diese Dateien nicht mehr in meinem Repository haben. Wie geht das.Wie lösche ich .orig Dateien nach der Zusammenführung aus dem Git-Repository?

modified: Gemfile.lock.orig 
    # modified: Gemfile.orig 
    # modified: app/assets/images/bg_required.png.orig 
    # modified: app/assets/javascripts/application.js.orig 

    etc... 

Jede Hilfe wird geschätzt.

+0

Mögliche http duplizieren: // Stackoverflow.com/questions/61212/removing-untracked-files-from-your-git-funktionierende-copy – ziu

+0

@ziu, Ich möchte Dateien entfernen, die bereits in meinem Repository vorhanden sind, eingecheckt von Git Merge oder von einem anderen Entwickler –

+0

I den Teil über eingecheckte Dateien verpasst. Die ORIG-Dateien werden jedoch von Mergetool geschrieben. Es klingt für mich wie eine nicht saubere Konfliktlösung. – ziu

Antwort

155

beste Lösung in diesem Fall ist es einfach zu halten und unabhängig von git dieser Dateien loszuwerden:

cd /your/repo/directory 
find . -name '*.orig' -delete 
+12

Wenn Sie einen Prädikatfehler erhalten, verwenden Sie: find. -name '* .orig' | xargs rm -f – Neil

+0

Nur als Warnung kann die Verwendung von 'find -delete' gefährlich sein. Überprüfen Sie, ob das Verzeichnis (in diesem Fall '.') Korrekt ist, um sicherzustellen, dass Sie nur löschen, was Sie löschen möchten – kingledion

-4

git rm <file>

http://git-scm.com/docs/git-rm

Fügen Sie auch Dateien/Verzeichnisse, die Sie auf Ihre .gitignore Datei ignorieren soll.

+0

'git rm ' Listen Sie sie einfach auf. – veritas1

+0

danke für Ihre Zeit, aber es gibt viele solche Dateien –

+0

Dann müssen Sie alle Dateien auflisten, oder verwenden Sie ein Werkzeug wie finden, um sie an git rm übergeben, oder verwenden Sie eine Shell-Glob und Schleife über sie. Git kopiert diese standardmäßige Unix-Befehlszeilenfunktionalität nicht. – mabraham

5

Sie können Dateien ignorieren mit .gitignore

Setzen Sie einfach * .orig in der Liste wie hier gezeigt

https://help.github.com/articles/ignoring-files

für aktuelle Dateien löschen können Sie Shell-Skript erstellen und aus Projektordner laufen wie unter

for file in `find *.orig -type f -print` 
do 
    echo "Deleting file $file" 
    git rm $file -f  
done 
+2

Obwohl er das sicherlich tun kann, ist es hier nicht das Richtige :) –

+0

ja, aber es wirkt sich nicht auf die bereits bereitgestellten Dateien aus. –

+0

Ich denke, es ist eine gute Idee, da es die Sicherung hält aber nicht inszeniert Dateien stört – akazemis

115

Versuchen git clean weitere Informationen können Sie here oder 01.238.327 finden

+1

Ich kann nicht nachverfolgte Dateien reinigen, aber was ist mit dem Entfernen solcher Dateien, die bereits im Repository sind. –

+0

müssen Sie zunächst die Datei aus dem Repository 'git rm ' entfernen und dann commit.after diese * .orig Datei in Git ignorieren. – Amar

+4

versuchen 'git rm -r * .orig' sehen, ob es funktioniert – Amar

2

git rm Gemfile.lock.orig und den Rest der Dateien, die Sie nicht benötigen. git commit --amend

Um diese Blobs vollständig zu entfernen, git gc --prune=0 --aggressive

+0

@linquizebut commit von git rm Gemfile.lock.orig wird in letzten commit mit Hilfe von ändern gehen, oder? Gibt es eine andere Möglichkeit, keine Commits für solche Dateien zu machen? –

0

Für mich git clean -f entfernt alle * .oig-Dateien. Und behält diejenigen, die schon vorher da waren.

Dies ist, was es (fast) wie nach der Zusammenführung sah:

$ git status 
On branch feature/xyz 
Your branch is ahead of 'origin/feature/xyz' by 568 commits. 
    (use "git push" to publish your local commits) 

Untracked files: 
    (use "git add <file>..." to include in what will be committed) 

    .idea/codeStyles/ 
    .idea/misc.xml.orig 

.idea/codeStyles/ schon da, bevor die Zusammenführung als untracked Datei war. .idea/misc.xml.orig (und vieles mehr) musste entfernt werden.

=> Mit git clean -f:

$ git clean -f 
Removing .idea/misc.xml.orig 

in Folge:

$ git status 
On branch feature/xyz 
Your branch is ahead of 'origin/feature/xyz' by 568 commits. 
    (use "git push" to publish your local commits) 

Untracked files: 
    (use "git add <file>..." to include in what will be committed) 

    .idea/codeStyles/ 
Verwandte Themen