我有一个创建 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/