У меня 1000+ версий XML в git, я написал скрипт для анализа и работы с данными XML. В течение этого года содержимое XML было изменено и передано git. Я хотел бы проверить содержимое старого XML с текущей фиксации на первый коммит. Есть ли возможность иметь все файлы, все версии, которые были добавлены в git, включая удаленные в той же папке с другим именем?Как я могу получить все исправленные файлы в git?
ответ
Вы могли бы просто написать все дни немного Баш скрипт, чтобы сделать это для вас.
dir=files;
filename=$1;
mkdir $dir;
for hash in $(git log --pretty=%H $filename); do
git checkout $hash $filename;
cp $1 $dir/$hash\_$filename;
done
Это поместит все версии файла в папку с именем files. Вы могли бы сделать его более сложным. Укажите имя папки в командной строке, проверьте, существует ли папка и т. Д. Бит, основная идея есть.
Если вы хотите увидеть все изменения во всех файлах между двумя коммитами, используйте git diff
.
git diff longhashfirstcommit..longhashfromlatestcommit
Вы можете получить хеши фиксации от запуска git log
.
Подробнее здесь.
http://linux.die.net/man/1/git-diff
http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository#Viewing-Your-Staged-and-Unstaged-Changes
Предполагая, что вы довольны выполнением небольшого сценария оболочки, вы можете объединить git-сантехнику, чтобы получить то, что вы хотите.
git rev-list --all
перечисляет хэши всех изменений в вашем репозитории.
git ls-tree -r <hash>
предоставит вам список всех файлов в фиксации (или другом древовидном виде). Вы можете разделить файлы XML, отфильтровав этот список и извлечь хеши.
git show <hash>
предоставит вам содержимое файла, учитывая его хэш. Вы можете перенаправить этот контент там, где хотите.
Для начала, следующий конвейер даст вам список всех файлов XML, с их хэш и имя файла:
for i in `git rev-list --all` ; do git ls-tree -r $i ; done | grep ".xml$"
Может быть, этот вопрос может помочь: http://stackoverflow.com/ q/278192/90874 – thSoft
Предполагая, что вы задаете этот вопрос, чтобы вы могли выполнять дальнейшую обработку, вы можете обнаружить, что спрашивать о том, чего вы пытаетесь достичь, в конечном итоге приведет к сокращенному значению, которое у вас не будет чтобы просмотреть все изменения всех файлов. –