标签: git-archive

做一个"git export"(比如"svn export")?

我一直在想是否有一个很好的"git export"解决方案,它创建了一个没有.git存储库目录的树的副本.我知道至少有三种方法:

  1. git clone然后删除.git存储库目录.
  2. git checkout-index 提到这个功能,但开头是"只需将所需的树读入索引...",我不完全确定如何做.
  3. git-export是第三方脚本,基本上git clone进入临时位置,然后rsync --exclude='.git'进入最终目的地.

这些解决方案都没有让我感到满意.最接近的一个svn export选项可能是选项1,因为这两个都要求目标目录首先为空.但是假设我可以弄清楚将树读入索引意味着什么,选项2似乎更好.

git export svn-export git-archive

2312
推荐指数
24
解决办法
62万
查看次数

树在Git中意味着什么?

我对如何使用感到很困惑git archive.

我有一个git存储库,顶层有文件夹 Foo,BarBaz.我需要以SVN方式导出文件夹Foo,以便快速进行测试部署.

我才知道,我可以用git-archiveSVN-ISH出口排序的方式.

但事情就是这样,以下工作正常:

git archive master | tar -x -C ~/destination
Run Code Online (Sandbox Code Playgroud)

它导致目标文件夹中的Foo,Bar,Baz文件夹.

然而,下面就会因错误使用fatal not a valid object name:

git archive master/foo | tar -x -C ~/destination
Run Code Online (Sandbox Code Playgroud)

文档

作为该git archive程序的概要,我看到它可以<tree-ish> [path]作为一个参数(概要总结为相关部分):

git archive <tree-ish> [path...]
Run Code Online (Sandbox Code Playgroud)

如果 master/foo 不是 tree-ish,那么是什么?

git git-archive

111
推荐指数
4
解决办法
4万
查看次数

如何在git中关闭分支

当我知道我不再使用分支时,是否可以关闭或锁定它?其实我想关闭一个分支,但我认为不可能用GIT关闭一个分支.删除怎么样?删除分支时,我的历史会发生什么?

git git-tag git-branch git-archive

35
推荐指数
2
解决办法
4万
查看次数

git archive fatal:协议不支持操作

我正在尝试检查远程git存储库的一部分.正如这里所建议的,在命令的帮助下

git archive --format=zip --remote=http://path_to_repository
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息:

fatal: Operation not supported by protocol.
Unexpected end of command stream
Run Code Online (Sandbox Code Playgroud)

Git是不是用http协议支持这个操作?这是托管环境或git本身的问题?任何指示都会有所帮助,谢谢.

git git-checkout git-archive

26
推荐指数
2
解决办法
1万
查看次数

git-archive一个子目录 -

我正在使用git-archive来存档git仓库中的子目录,如下所示:

git archive -o ../subarchive.zip HEAD subdir/*
Run Code Online (Sandbox Code Playgroud)

但是,生成的存档会维护subdir /目录结构,即内容为:

subdir/
   whatever.js
   morestuff.js
Run Code Online (Sandbox Code Playgroud)

当我真的想在存档的根目录中找到whatever.js和morestuff.js时.

怎么办?谢谢.

git subdirectory git-archive

19
推荐指数
1
解决办法
1万
查看次数

带子模块的git archive export(git archive all/recursive)

我有一个用git版本化的网站目录.我使用子模块来处理Twitter Bootstrap,colorbox和lessjs等必需的库,因为我不应该跟踪源代码,而只跟踪我使用的代码版本.

现在我想部署项目,因此我也需要子模块代码.通过使用git archive我不从子模块获取源文件/代码.

以下三种方法尝试实现我想要的但是不能工作: 第一种方法

#!/bin/sh

export revision="$1"

export GIT_INDEX_FILE=".git/tmpindex"
rm -f "$GIT_INDEX_FILE"

git read-tree $revision

export up="$(pwd)"

read_one_level () {
        export GIT_ALTERNATE_OBJECT_DIRECTORIES="$GIT_ALTERNATE_OBJECT_DIRECTORIES":$(
            git submodule foreach 'echo "$up/$path/.git/objects"' |
            grep -E -v '^(Entering|No submodule mapping found)' |
            tr '\n' : |
            sed 's/:$//'
        )

        git submodule foreach '
                cd "$up"
                subcommit=$(git rev-parse :"$path")
                git rm --cached "$path"
                git read-tree -i --prefix="$path/" $subcommit
        ' >/dev/null
}

while git ls-files -s | grep -q ^160000; do
    read_one_level
done

git …
Run Code Online (Sandbox Code Playgroud)

git-submodules git-archive

14
推荐指数
3
解决办法
8149
查看次数

git archive:export-ignore,忽略目录

我有一个git存储库.gitattributes:

my_script.py export-subst
Makefile export-ignore
README.md export-ignore
.gitattributes export-ignore
.gitignore export-ignore
hooks/ export-ignore
tests/ export-ignore
*.pyc export-ignore
Run Code Online (Sandbox Code Playgroud)

但当我做:

git archive HEAD | tar -x -C ../archive_dir
Run Code Online (Sandbox Code Playgroud)

archive_dir目录中,我得到目录hookstests:

 ls ../archive_dir/
 hooks/  my_script.py tests/
Run Code Online (Sandbox Code Playgroud)

为什么?

我的git版本是1.7.9.

git gitattributes git-archive

8
推荐指数
1
解决办法
5266
查看次数

如何从git存档中排除文件?

给定一个带有两个文件的单个提交的简单测试存储库,a并且b,我可以获得特定文件的列表:

$ git ls-files a
a
Run Code Online (Sandbox Code Playgroud)

或者除特定文件之外的所有文件的列表:

$ git ls-files . ':!b'
a
Run Code Online (Sandbox Code Playgroud)

我可以创建特定文件的存档:

$ git archive HEAD a | tar tf -
a
Run Code Online (Sandbox Code Playgroud)

但我无法创建除特定文件之外的所有文件的存档:

$ git archive HEAD . ':!b' | tar tf -
a
b
Run Code Online (Sandbox Code Playgroud)

在我的真实存储库中,使用特定文件存档的选项不是我的选项,因为它超出了最大命令行参数长度.

我知道我可以.gitattributes通过export-ignore属性存储要排除的文件列表,但列表是动态生成的.我可以自动更改文件,但更改不会在另一次提交之后被提取.

是否有其他调用无需另外提交即可运行?

git git-archive

7
推荐指数
2
解决办法
4071
查看次数

带有未分级更改的git存档

我正在构建自己的rpm.通常我使用git archive从我感兴趣的提交或标记中获取tarball(假设我已经添加了标记1.0):

git archive --format=tgz --prefix=product-1.0 1.0 > product-1.0.tgz
Run Code Online (Sandbox Code Playgroud)

假设现在我正在做一些我尚未提交的本地开发项目,我想获得一个档案; 有没有办法获得这个而不必提交?

编辑我可以使用这样的东西:

tar cf product-1.0.tgz --exclude=.git
Run Code Online (Sandbox Code Playgroud)

但是这将包括我不喜欢的所有二进制文件和其他未跟踪的文件...

git git-archive

5
推荐指数
3
解决办法
2784
查看次数

Git存档包括实际的存储库?

我需要创建一个我的Git项目的存档,忽略并省略指定的文件.gitignore,但包括实际的.git存储库文件夹.只需运行git archive master就会遗漏.git文件夹.

有没有办法让git archive包含.git文件夹但仍然忽略指定的文件.gitignore

git git-archive

4
推荐指数
2
解决办法
2767
查看次数