从裸仓库上更改的文件中获取 git 存档

标签 git diff archive

我有一个创建 install-tars 的远程裸存储库(无工作目录)。很好用。但是现在我只想为更改的文件创建 tars。我这样试过:

git archive --format=tar --prefix='/' HEAD `git diff V1.02 --name-only` | gzip -9 > ~/tars/update-v1.02-`git describe master --tags`.tar.gz

这对我的本地存储库非常有用。它使用从标记版本 V1.02 到最新提交的文件创建一个 tar。但它不适用于裸存储库。还有其他解决方案吗?

最佳答案

git diff的二次提交形式将在裸存储库 (git diff [options] <commit> <commit> [--] [<path>...]) 中工作。

以下应该按照我的理解你想要的:

git archive --format=tar --prefix='/' master `git diff V1.02 master --name-only` | gzip -9 > ~/tars/update-v1.02-`git describe master --tags`.tar.gz

我还建议更改 HEAD从您的原始命令到 master (如上所示)与命令的其余部分保持一致,并且在有人更改哪个分支时具有弹性 HEAD指向(或者在上面的示例中用 master 替换所有出现的 HEAD)。

关于从裸仓库上更改的文件中获取 git 存档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12841360/

相关文章:

git - 尝试在 WSL 上使用 gpg 在 git 上签署提交但不起作用

linux - 单向差异文件

php - 在没有 exec/passthru 的情况下从 PHP 中的目录构建 Tar 文件

git - 在 git 中为遗留项目管理清理提交的好方法是什么?

ruby-on-rails - 从 GitHub 运行 Ruby on Rails 应用程序

git - 如何查看两次提交之间没有提交的变化?

WordPress 自定义帖子类型,带有自定义 slug 和获取变量

block - Bzip2 block 头 : 1AY&SY

git - 执行 git merge 时应该在什么情况下使用 strategy-option 标志? (耐心|最小|直方图|迈尔斯)

diff - 是否可以在文件之间进行智能比较?