相关疑难解决方法(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万
查看次数

如何将文件从一个git仓库移动到另一个(不是克隆),保留历史记录

我们的Git存储库最初是作为单个怪物SVN存储库的一部分开始的,其中每个项目都有自己的树,如下所示:

project1/branches
        /tags
        /trunk
project2/branches
        /tags
        /trunk
Run Code Online (Sandbox Code Playgroud)

显然,将文件从一个文件移动到另一个文件非常容易svn mv.但在Git中,每个项目都在自己的存储库中,今天我被要求将子目录从中移动project2project1.我做了这样的事情:

$ git clone project2 
$ cd project2
$ git filter-branch --subdirectory-filter deeply/buried/java/source/directory/A -- --all
$ git remote rm origin  # so I don't accidentally the repo ;-)
$ mkdir -p deeply/buried/different/java/source/directory/B
$ for f in *.java; do 
>  git mv $f deeply/buried/different/java/source/directory/B
>  done
$ git commit -m "moved files to new subdirectory"
$ cd ..
$
$ git clone project1
$ cd project1
$ …
Run Code Online (Sandbox Code Playgroud)

git repository

447
推荐指数
10
解决办法
13万
查看次数

从git tracking中删除文件夹

我需要从跟踪中排除文件夹(名称上传).我试着跑

git rm -r --cached wordpress/wp-content/uploads
Run Code Online (Sandbox Code Playgroud)

然后我添加了.gitignore的路径

/wordpress/wp-content/uploads
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时,git status他们显示为已删除.如果我尝试提交更改,则文件将被删除,不仅会从跟踪中删除.

我究竟做错了什么?

我也试过了

git update-index --assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)

但这似乎只解开文件.但我需要从跟踪中删除整个文件夹(包括子文件夹).

git git-rm

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

从文件夹创建子模块存储库并保留其git提交历史记录

我有一个Web应用程序,以特定的方式探索其他Web应用程序.它包含一个demos文件夹中的一些Web演示,其中一个演示应该拥有它自己的存储库.我想为这个演示应用程序创建一个单独的存储库,并使其成为一个分装 来自主存储库的子模块,而不会丢失其提交历史记录.

是否可以将提交历史记录保存在存储库文件夹中的文件中并从中创建存储库并将其用作子模块

git git-submodules revision-history

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

将git管理的子目录切换到子模块

我们曾经在一个Rails应用程序中有一个本地黑客的delayed_job,在vendor/plugins/delayed_job中.它作为一次性事件安装并在主应用程序仓库中检入git.

现在我们决定在github上fork delayed_job并用git子模块替换子目录,如下所述:

http://doblock.com/articles/using-git-submodules-to-manage-plugins-in-rails

在此之前,我只是删除了vendor/plugins/delayed_job,而没有将其检入.现在,尽管添加了子模块,主repo中的git status仍显示vendor/plugins/delayed_job中的新文件.

我们应该如何处理删除作为repo一部分的子目录并使其保存git子模块的情况?在将子模块克隆到其位置之前,我们是应该首先使用git rm删除它,还是更彻底地删除它?

git ruby-on-rails-plugins git-submodules

12
推荐指数
1
解决办法
2601
查看次数

重写历史 git filter-branch 创建/拆分为子模块/子项目

我目前正在将 cvs 项目导入 git。
导入后,我想重写历史记录以将现有目录移动到单独的子模块中。

假设我有这样的结构:

file1
file2
file3
dir1
dir2
library

现在我想重写历史记录,以便该目录library始终是 git 子模块。比如说,将指定的目录拆分为它们自己的子模块/子项目

这是我当前的代码:

文件重写子模块(被调用)

cd project
git filter-branch --tree-filter $PWD/../$0-tree-filter --tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud)

文件重写子模块树过滤器

    #!/bin/bash

    函数 gitCommit()
    {
        取消设置 GIT_DIR
        取消设置 GIT_WORK_TREE
        git添加-A
        if [ -n "$(git diff --cached --name-only)" ]
        然后
            # 需要提交的东西
            git 提交 -F $_msg
        菲
    }

    _git_dir=$GIT_DIR
    _git_work_tree=$GIT_WORK_TREE
    取消设置 GIT_DIR
    取消设置 GIT_WORK_TREE
    _dir=$PWD

    如果[-d“库”]
    然后
        _msg=$(临时文件)
        git 日志 ${GIT_COMMIT}^! --format="%B" > $_msg
        git rm -r --缓存库
        光盘库 …

git url-rewriting subproject git-submodules git-filter-branch

5
推荐指数
1
解决办法
1344
查看次数