我只是在寻找一种可能性来授予另一位开发人员访问我的 git 存储库中的一个文件的权限。除了子模块/子树之外还有什么方法吗?
这只是应该由其他人翻译的本地化文件。
期待您的回复!
谢谢!
塞巴斯蒂安
我有 GIT 子树的问题。
让我们看看,我有一个项目 A,其中包括:
Project A
|_CodeFolder1
|_CodeFolder2
|_SharedFolder1
|_SharedFolder2
Run Code Online (Sandbox Code Playgroud)
假设我创建了一个只有SharedFolder1和SharedFolder2的新存储库。所以我从主存储库中删除了这两个文件夹,并将它们添加到新的共享存储库中,如下所示:
SharedProject
|_SharedFolder1
|_SharedFolder2
Run Code Online (Sandbox Code Playgroud)
我是子树的新手,但到目前为止我实现了从远程子树拉/推。但是我遇到了问题。添加子树时,必须添加前缀,但我不想将共享代码保存在不同的文件夹中,例如:
Project A
|_CodeFolder1
|_CodeFolder2
|_SharedFolders
|_SharedFolder1
|_SharedFolder2
Run Code Online (Sandbox Code Playgroud)
--prefix每当我尝试添加子树时,这就是什么:
git subtree add --prefix=SharedFolders --squash shared master
Run Code Online (Sandbox Code Playgroud)
有什么办法可以告诉 git 没有前缀,或者子树必须直接保存在 ProjectA 中,就像在第一个模式中一样,而无需为子树创建新文件夹?
我试过这个命令
git subtree add --prefix=/ --squash shared master
Run Code Online (Sandbox Code Playgroud)
但总是有错误。似乎子树不允许我将树中的文件夹直接带到我的工作路径而不为共享文件创建新文件夹。
任何帮助将非常感激。
是否有任何理由使用包管理器而不是git子模块/子树,反之亦然?git解决方案似乎比简单的包管理器麻烦得多.
假设git子模块的节省空间的好处并不重要.
更新:有人在这个问题上添加了一个C++标签,但我已经删除了它.这个问题与C++没有特别的关系.欢迎提供比接受的答案更一般的答案.
如何删除分支的提交master?
我已经添加了一个大型库,以及一个非常丰富的提交历史(并且在我的代码之前)通过Git子树添加到子目录.我想追溯整个历史,但仍然可以合并到新的提交到库.
我尝试了各种组合,git rebase但我从未得到预期的结果[*].
我的存储库看起来像:
A---B-----------F---G master
/
... C---D---E
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像:
A---B-----------F'--G' master
/
E'
Run Code Online (Sandbox Code Playgroud)
要么:
A---B-------E'--F'--G' master
Run Code Online (Sandbox Code Playgroud)
[*]:
git rebase --onto C E mastergit checkout F; git rebase --onto C E master我刚刚将一个大的svn repo迁移到git并开始使用gitflow.它的作用就像一个魅力,但现在我正在考虑将这个大型回购分成几个较小的回购.
让我们假设repo目录树如下:
/repo
- libs
- apps
-- app 1
-- app 2
Run Code Online (Sandbox Code Playgroud)
我们希望将其拆分为三个存储库,一个具有核心结构(libs和apps目录),另外两个具有apps目录.
如果我使用git子树进行拆分,我将能够在每个部分单独使用git flow,或者我将不得不全局使用它?
PS:这是我在stackoverflow中的第一个问题,请善待:)
git configuration multiple-repositories git-flow git-subtree
根据我的问题Git子树导出和重新导入的问题,我想问一下如何将文件夹转换为子树.
想象一下,我有一个存储库A,我有代码,现在应该与另一个项目共享(可能更多),所以我将所有共享代码放在文件夹"sub"中.此文件夹现在应该被提取(如果可能没有历史记录)到裸存储库C.之后"sub"应该成为C的子树,但不会丢失A中的历史(非常重要).我也希望能够在"sub"中进行更改并将它们推回到C.
我从http://git-scm.com下载并安装了最新的Git版本1.8.4.2 .我希望可以安装各种第三方Git模块,如Subtree /usr/local/git/contrib.但是,该contrib文件夹内部只包含一个文件夹(completion),没有其他文件或文件夹.
所以我有两个问题:
为什么contrib文件夹中缺少模块?
如何Subtree在contrib文件夹中没有相同的情况下安装?(我更喜欢从官方Git源代码安装Subtree,而不是从https://github.com/apenwarr/git-subtree安装,现在这是一个过时的仓库)
顺便说一下,我正在运行OS X Mavericks
我实际上有两个存储库:
mainexternal该main仓库是一段时间后,将合并后external/main的目录(如子树).现在我想将所做的更改迁移external/main回main存储库,但只有这些提交而没有其他无关的提交external/<anything-else>.
我实际上尝试过经典:
git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter main -- --all
Run Code Online (Sandbox Code Playgroud)
但是这也删除了对初始main存储库所做的所有提交,只留下了在externalgit存储库中创建的提交.
那么:如何只保留提交:
a)制作初始main存储库
和
b)制作external(external/main)的子树
当我尝试时git pull -s subtree ../external,提交都被合并,包括在子树中没有改变任何内容的提交.我想只有实际改变子树中某些内容的提交,并且还只有来自子树的文件信息.
我正试图从遥控器拉到我的仓库中的文件夹.使用时:
git subtree pull --prefix my-local/folder my-remote master
我收到以下错误:
fatal: refusing to merge unrelated histories
我在另一篇文章中读到我可以使用该选项--allow-unrelated-histories但是当我这样做时error: unknown option --allow-unrelated-histories
(我把选项放在最后)
我正在使用git版本2.10.1和Windows 10
任何有关如何向前推进的帮助或想法都非常感谢!