0

我是 git 新手,我有兴趣在 git 存储库中更新目录,我正在克隆存储库并在其上运行 filter-branch:

git clone http://url.git
cd repository
git filter-branch --subdirectory-filter directory-I-m-interested

这太棒了,存储库现在有目录的内容-我对根路径感兴趣,但是我仍然不确定如何使该目录中的文件与原始项目保持同步。

我尝试过使用以下命令:

git fetch
git cherry-pick hash_taken_from_last_command

我收到以下错误:

error: could not apply a0ede43... 2
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

可能我只是在执行无意义,有什么提示吗?

4

3 回答 3

1

听起来您想要的是稀疏结帐。看这里

http://briancoyner.github.io/blog/2013/06/05/git-sparse-checkout/

例如。它将 git 中的工作副本(签出文件)限制为原始 git 存储库的子集。您可以使用 git 照常遵循原始内容,但只需查看您感兴趣的部分即可。

于 2014-03-20T19:59:32.093 回答
0

你正在执行无意义。我相信您正在寻找功能,svn因为您只想使用一个子目录。在上述git filter-branch命令之后使用本地存储库,agit push可能会失败,并且 agit push -f会清除存储库的其他目录。

于 2013-11-04T12:37:14.653 回答
0

Git 为存储库的完整性提供了非常强大的保证。运行git filter-branch是一项深度外科手术,它会生成一个全新的存储库,并重新计算所有提交校验和等。实际上,您已经重写了项目的整个历史,因此在从旧存储库获取和合并更改期间,Git 会正确地抱怨它没有'无法识别存储库的新的、已更改的历史记录。Git 无法在人格分裂的同时记住并忘记其余的目录。

正如您所说,您是 Git 新手,所以请重新考虑您是否真的需要对您的存储库进行如此深入和侵入性的外科手术。

于 2013-11-04T12:46:31.600 回答