git 归档操作
访问量:6589

一、简介

在git中,有一个比较好用的命令git archive ,是从git tree里面创建归档。格式如下:

git archive 选项 参数

如下:

git archive [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>]
              [-o <file> | --output=<file>] [--worktree-attributes]
              [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish>
              [<path>…]

1、常用选项描述

--format 用来指定归档格式,如 --format=tar

--list 用来查看git支持的归档格式,如下:

git archive --list

--remote用来指定归档的来源,可以指定为远程,即从远程下载归档文件。比如:

git archive --format=tar --remote=git@github.com:dequanLi/codeFragment.git

--prefix指定归档保存的目录,默认是当前文件夹。看到这个选项,手动安装过linux软件的,应该都能够明白,即指定安装目录。如下:

git archive --format=tar --remote=git@github.com:dequanLi/codeFragment.git --prefix=dq/test1/

--output用来指定将归档输出到指定的文件中。默认情况下,归档是输出到stdout中,即标准输出中。如下,将会生成一个 dq.tar归档文件

git archive --format=tar --output=dq.tar

当然,也可以使用linux的重定向,将归档输出到指定的文件中,如下:

git archive --prefix='dqProject/' --format=tar dev > web.tar

2、常用参数

1、指定打包的分支

git archive dev     //打包dev分支
git archive master //打包master分支
git archive HEAD   //打包HEAD指向的分支,一般是当前分支

2、指定打包的文件

git archive --format=tar --output=dq.tar  dev t1.txt t2.txt t3.txt  // 打包dev分支t1.txt t2.txt t3.txt 文件

3、打包有修改的文件

打包有修改的文件,其实和打包指定的文件,实质是一样一样的。如下:

git archive --format=tar --output=dq.tar  dev $(git diff --name-only HEAD^)

因为 git diff --name-only HEAD^ 能够吧上次修改的文件都罗列出来。