我有以下项目设置:
Solution A
Project 1 (轻量级组件)Project 2(包含很多文件并依赖于Project 1)Solution A是一个单一的git存储库.然后我创建了另一个解决方案,发现我可以重用甚至更新其功能Project 1.所以我的第二个解决方案可能看起来像这样:
Solution B
Project 1 (必须分享!)Project 3(取决于Project 1).现在我想Project 1成为一个共享组件.也就是说,每当我Project 1从任一解决方案(A或B)更改源代码时,我都需要另一个相应的更新.
也许这有点像git的子模块功能.但是,我能够使用它的唯一方法是将整体指定为子模块.由于体积庞大,这并不是我想要的理想选择.我只需要它的一小部分就是一个子模块.Solution ASolution BSolution A
我知道它可以在svn中完全按照我的描述工作:在svn:externals属性中指定外部存储库中的目录.
有什么提示吗?或许,我错过了什么?
我有两个项目(A和B).他们都使用项目Common.我希望通过子模块将Common包含在A和B中,因为那时我可以直接将A&B中的每个提交绑定到Common中依赖的提交.
在过去,我试图让我的团队使用这样的子模块,但我们无法让它顺利运行.我们正在从子模块本身开发公共代码并从子模块提交但是我们遇到了很多问题,我们恢复了将所有项目都放在同一目录下(C:\ dev\A,C:\ dev\Common).
我很确定我们不知道子模块应该如何使用,但是如果你不能直接在子模块中开发Common代码,那么这会不会让它更难开发?有人可以解释一下子模块的正确用法吗?
我对一些最佳实践感到好奇.
有一个git repo,我想在我的项目中包含一个子模块.我也想为这个回购做出贡献并提供拉动请求.我已经将repo分叉了,并希望将我的fork作为子模块添加到我的项目中.
我slim在我的fork中创建了一个新的分支,从原始的repo master分支中删除了一些东西:例如示例文件,演示等.我特别想slim在子模块中使用这个分支来保留额外的东西.
我已经成功完成了这个分支和子模块策略.但是我现在想知道拉动请求和对项目的贡献.
理想情况下,我想将子模块编辑为项目的一部分,并将提交推送到子模块slim分支.然后我想将slim分支中的更改合并回来,master以便我可以执行拉取请求.
但是我不希望我在slim分支上的初始删除提交合并回主服务器.有什么方法可以回馈到项目,而不是弄乱我的一些删除提交?
我们正在使用子模块,我们是git的新手.
我们经常看到子模块本身的合并冲突,没有文件冲突,只有子模块.输出中列出了多个版本git submodule summary.我们通过git add <submodule>在超级项目中运行来解决它们.
但是今天我们让开发人员在以这种方式解决冲突时失去了子模块的提交.
运行git add会选择远程版本吗?不应该合并子模块的内容吗?如果她在子模块中进行了更改并提交了它们(我看到了),那么为什么在执行拉动并解决冲突后该提交会消失?
我有一个用git管理的django项目.我是git把它推给我的主人.现在,我希望能够将其中一个目录(包括所有子目录)推送到另一个git仓库.如果可能的话,怎么可能呢?
编辑:所以我希望该目录本身就是一个git repo.
作为一个相对子模块菜鸟,我想从它的原点更新我的子模块,并做了:
git pull
Run Code Online (Sandbox Code Playgroud)
这导致:
remote: Counting objects: 111, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 57 (delta 54), reused 57 (delta 54)
Unpacking objects: 100% (57/57), done.
From github.com:eteanga/smarty
8e9a011..818ab3e master -> origin/master
You are not currently on a branch, so I cannot use any
'branch.<branchname>.merge' in your configuration file.
Please specify which remote branch you want to use on the command
line and try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.
Run Code Online (Sandbox Code Playgroud)
试图解决:
git pull …Run Code Online (Sandbox Code Playgroud) 我想获取指定子模块的当前提交ID.我想当我进入子模块目录并运行git rev-parse HEAD后,我发现这是一个超级项目当前ID.git submodule status | grep <submodule_name>也试过,但它对我来说很慢.知道如何更快地获取这些信息吗?
我有一个dotfiles存储库.我想将另一个与子模块(prezto)合并到其中,因此我可以方便地将所有内容放在一个存储库中,而不会出现子模块的不便.
我怎样才能将prezto与其所有子模块合并到我的dotfiles存储库中?
我可以使用子模块,我可以使用"老式"方式或使用较新的git子树工具拆分和合并子树.
我只是不知道如何做这个具体案例.
我们有一个包含N个文件夹的git存储库.
Repo
|-Folder1
|-Folder2
|- ...
|-FolderN
Run Code Online (Sandbox Code Playgroud)
我们希望与不同的合作者共享不同的文件夹.每个协作者只能访问其允许的文件夹子集.使用git实现这一目标的"好"方法是什么?
答案是使用git submodules.但在我读完这篇文章之后:https:
//codingkilledthecat.wordpress.com/2012/04/28/why-your-company-shouldnt-use-git-submodules/
我明白你需要掌握好git(这不是我们的合作者的情况),以便在使用时没有问题git submodules.
我读到了一些可能的替代品,比如gitslave,和git subtree.gitslave似乎是一个很好的解决方案,但在我看来仍然是一个复杂的解决方案
这是我的简单解决方案,我想知道它是否有一些非常糟糕的缺点:
- 为每个文件夹和Repo存储库提供一个简单的存储库.然后在主Repo中添加Folder1,...,FolderN中的所有文件.
-globalpush脚本:
function globalpush(){
REPOS="$HOME/Repo/
$HOME/Repo/Folder1
$HOME/Repo/Folder2
$HOME/Repo/Folder3
# ...
$HOME/Repo/FolderN"
#do not show untracked files
git config status.showuntrackedfiles no
read -p "Commit description: " description
for repo in ${REPOS}
do
# if the repo folder exists
if [ -d $repo ]
then
# Go inside the repo
cd $repo
echo …Run Code Online (Sandbox Code Playgroud) 我们有多个(约75个)maven项目,我们已按以下方式单独推送到Gitlab :
GROUP1 - 4个项目
GROUP2 - 2个项目
GROUP3 - 10个项目
.
.
GROUP10 - 6个项目
我们现在想要实现CI工具Jenkins.但是,在jenkins个性化中创建和管理所有75个项目非常耗时.所以我们有两种方法.
git submodules:在这种情况下,我们可能会遇到很多复杂问题,因为个别开发人员正在分叉多个项目,并在他的分叉回购中工作.git项目:在这种情况下,如果每个开发人员都会分叉主仓库,那么所需的磁盘空间很大,性能也会降低.但它会比git submodules管理更好,因为maven可以简化构建multiple module way. 所以根据你的意见,我们可以考虑其他方法吗,或者我们可以选择单一的git项目吗?
git ×10
git-submodules ×10
git-subtree ×2
merge ×2
conflict ×1
fork ×1
git-merge ×1
git-pull ×1
git-slave ×1
git-subrepo ×1
github ×1
gitlab ×1
jenkins ×1
maven ×1
pretzo ×1