相关疑难解决方法(0)

如何克隆仅Git存储库的子目录?

我有我的Git存储库,它在根目录下有两个子目录:

/finisht
/static
Run Code Online (Sandbox Code Playgroud)

当这是在SVN,/finisht在一个地方签出,而/static在其他地方查出来,像这样:

svn co svn+ssh://admin@domain.com/home/admin/repos/finisht/static static
Run Code Online (Sandbox Code Playgroud)

有没有办法用Git做到这一点?

git repository git-clone subdirectory sparse-checkout

1298
推荐指数
18
解决办法
73万
查看次数

从GitHub仓库下载单个文件夹或目录

如何从GitHub上托管的远程Git仓库中仅下载特定文件夹或目录?

举个例子说GitHub repo住在这里:

git@github.com:foobar/Test.git
Run Code Online (Sandbox Code Playgroud)

其目录结构:

Test/
??? foo/ 
?   ??? a.py
?   ??? b.py   
??? bar/
    ??? c.py
    ??? d.py
Run Code Online (Sandbox Code Playgroud)

我只想下载foo文件夹而不是克隆整个Test项目.

git directory file github repository

967
推荐指数
29
解决办法
60万
查看次数

是否可以在不先检查整个存储库的情况下进行稀疏检出?

我正在使用包含大量文件的存储库,这需要几个小时才能结账.我正在研究Git是否能够很好地使用这种类型的存储库,因为它支持稀疏检出,但我能找到的每个示例都执行以下操作:

git clone <path>
git config core.sparsecheckout true
echo <dir> > .git/info/sparse-checkout
git read-tree -m -u HEAD
Run Code Online (Sandbox Code Playgroud)

这个命令序列的问题是原始克隆也执行结帐.如果将-n添加到原始克隆命令,则read-tree命令会导致以下错误:

错误:稀疏结账不会在工作目录上留下任何条目

如何在不先检出所有文件的情况下进行稀疏结账?

git

159
推荐指数
12
解决办法
11万
查看次数

使用Git和Mercurial进行部分克隆

是否有可能只在Git和Mercurial中克隆一个分支(或来自给定的提交)?我的意思是,我想要克隆一个中央回购,但由于它很庞大,我只想获得它的一部分,并且仍能够回馈我的变化.可能吗?比如,我只想从Tag 130开始或类似的东西?

如果是这样,怎么样?

git mercurial

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

在Git 1.7.0中稀疏结账?

使用Git 1.7.0中新的稀疏结账功能,是否可以像在SVN中一样获取子目录的内容?我找到了这个例子,但它保留了完整的目录结构.想象一下,我只想要'perl'目录的内容,而没有名为'perl'的实际目录.

- 编辑 -

例:

我的git存储库包含以下路径

repo/.git/
repo/perl/
repo/perl/script1.pl
repo/perl/script2.pl
repo/images/
repo/images/image1.jpg
repo/images/image2.jpg
repo/doc/
repo/doc/readme.txt
repo/doc/help.txt
Run Code Online (Sandbox Code Playgroud)

我想要的是能够从上面的存储库中生成这种布局:

repo/.git/
repo/script1.pl
repo/script2.pl
Run Code Online (Sandbox Code Playgroud)

然而,使用当前的稀疏结账功能,似乎只能获得

repo/.git/
repo/perl/script1.pl
repo/perl/script2.pl
Run Code Online (Sandbox Code Playgroud)

这不是我想要的.

git version-control sparse-checkout

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

除一个文件夹外的GIT结帐

我想结帐到其他分支,或以前的提交,但我想保持一个文件夹相同的文件(不签出文件夹).

我希望该文件夹将显示在git status,所以我现在可以将此文件夹添加到索引中.

例如,我有一个文件夹node_modules.我希望文件夹在我的所有提交中(我知道大多数人更喜欢.gitignore node_modules文件夹).但是当我转移到其他提交或检查其他分支时,我希望它git不会触及该node_modules文件夹.

可能吗?

git git-checkout

13
推荐指数
1
解决办法
5543
查看次数

启用后如何禁用稀疏结账?

我启用了稀疏结账

git init
git remote add <url>
git config --global core.sparseCheckout true
echo "assets" >> .git/info/sparse-checkout
git pull origin master
Run Code Online (Sandbox Code Playgroud)

Git只为我检查了资产文件夹

但是现在,我想再次启用完整的分支机构检查(签出文件夹/文件),但它似乎不起作用.

1)首先我禁用了配置

git config --global core.sparseCheckout false
Run Code Online (Sandbox Code Playgroud)

2)删除.git/info/sparse-checkout中的条目

但git没有为我检查任何其他文件夹/文件,似乎它坚持'资产'文件夹.

谁能告诉我如何在不创建新仓库的情况下重置/禁用此稀疏结账.

git

12
推荐指数
3
解决办法
2834
查看次数

git clone --filter选项的语法是什么?

Git 2.17更新日志描述了此选项:

  • 有人介绍了克隆和获取的机制,这又涉及包装和拆包对象,该机器已被告知如何使用
    另一个主题引入的过滤机制来省略某些对象。现在
    ,它知道将生成的包标记为允诺包,以容忍丢失的
    对象,为“狭窄”克隆奠定基础。

这个标志准备好使用了吗,还是很有可能很不稳定?有谁知道正确的语法通过?我通过的所有标志都被视为无效的过滤器规范而被拒绝。例如,这些是我尝试按目录过滤的:

git clone file://path --depth=1 --filter '--subdirectory-filter Assets' TestRepo
git clone file://path --depth=1 --filter --subdirectory-filter Assets TestRepo
git clone file://path --depth=1 --filter Assets TestRepo
Run Code Online (Sandbox Code Playgroud)

git

8
推荐指数
2
解决办法
5806
查看次数

为什么在稀疏结帐后调用`git read-tree`

根据Subdirectory Checkouts with git sparse-checkoutgit read-tree -mu HEAD在已存在存储库的情况下配置稀疏结帐后调用一次,即:

# Enable sparse-checkout:
git config core.sparsecheckout true

# Configure sparse-checkout 
echo some/dir/ >> .git/info/sparse-checkout
echo another/sub/tree >> .git/info/sparse-checkout

# Update your working tree:
git read-tree -mu HEAD
Run Code Online (Sandbox Code Playgroud)
  • 你能read-tree更详细地解释一下这个步骤吗?
  • 它是如何工作的?
  • 到底是怎么回事?
  • 为什么一个人使用read-tree而不是,让我们说,checkout
  • 为什么要使用-mu(为什么这是一个合并,什么是合并)?

-m

    Perform a merge, not just a read. The command will refuse to run if
    your index file has unmerged entries, indicating that you have not
    finished previous merge …
Run Code Online (Sandbox Code Playgroud)

git sparse-checkout

6
推荐指数
1
解决办法
1111
查看次数

具有稀疏结帐功能的 Git 提交/推送/拉取

我昨天开始使用 Git,在此之前我已经使用 SVN 多年了。让我向您解释一下我到底想实现什么目标:

我有一个针对不同项目的主要 git 存储库。像这样的东西:

  • main_repo/proj1
  • main_repo/proj2
  • main_repo/proj3

我无法为这些子项目创建单独的存储库。现在我(或其他用户)应该能够在这些独立项目中签出/提交/推送/拉取。

为此,我尝试使用以下命令进行稀疏结帐:

  1. mkdir proj1; cd proj1
  2. git init
  3. git remote add origin https://main_repo
  4. git config core.sparsecheckout true
  5. echo "proj1/" > .git/info/sparse-checkout
  6. git pull origin master

现在我需要的是获取 proj1 中同一当前目录中存在的所有文件。我得到的是这样的:

/proj1/proj1/files_and_dirs_in_proj1
Run Code Online (Sandbox Code Playgroud)

我需要的:

/proj1/files_and_dirs_in_proj1
Run Code Online (Sandbox Code Playgroud)

其次,checkout-dir 的行为不像 git repo。它不带有任何 .git 目录。所以我不明白如何在稀疏签出项目中进行提交/推/拉。

我希望我解释得很好。请建议。

git version-control sparse-checkout

6
推荐指数
1
解决办法
6099
查看次数