2016-09-28 5 views
0

Ich arbeite an der Migration des SVN-Repository zum Git-Repository.Wie erstellt man .gitignore für alle Zweige im Repository?

Sobald ich migriert habe, konvertiere ich SVN-Zweige und Tags in Git-Zweige und -Tags.

Allerdings habe ich versucht, .gitignore zu allen Zweigen mit folgenden Befehl hinzuzufügen. Es fügt dem aktuellen Arbeitszweig immer hinzu.

Wie kann ich .gitignore für alle Zweige hinzufügen, anstatt den aktuellen Zweig, in dem der Befehl ausgeführt wird.

Antwort

0

Sie können durch die Zweige iterieren und cherry-pick verwenden, um Ihr Commit mit den Gitignore-Dateien zu übernehmen.

Sie ein Skript wie folgt aus (git-apply-to-all-branches.sh) verwenden:

#!/usr/bin/env bash 

sha=$1 

# get current branch name 
# http://stackoverflow.com/a/1593487/1401409 
branch_name="$(git symbolic-ref HEAD 2>/dev/null)" || 
branch_name="(unnamed branch)"  # detached HEAD 
branch_name=${branch_name##refs/heads/} 

# iterate over all branches 
git for-each-ref refs/heads | cut -d/ -f3- | while read branch; 
do 
    # skip current branch 
    [ $branch == $branch_name ] && continue 

    git checkout $branch 
    git cherry-pick $sha 
done 

Und vorausgesetzt, Sie verpflichtet, nur Ihre gitignore Sie aufrufen können auf dem aktuellen Zweig:

./git-apply-to-all-branches.sh <sha_of_your_gitignore_commit> 
+0

möglich, Skript ohne Cherry-Pick zu schreiben? – virendrao

+0

Eine andere Option wäre, die Ausgabe von show-ignore in .git/info/exclude zu platzieren, wie in der Dokumentation vorgeschlagen. https://git-scm.com/docs/git-svn#_basic_examples. Dann müsstest du es nicht einmal tun. – loopkin

+0

aber diese Auswirkungen bleiben bei lokalen Repository .. wenn ich auf Remote-Repository schieben andere Entwickler ziehen und Push-Code, die ignorierte Datei enthält dann funktioniert es nicht richtig – virendrao

Verwandte Themen