我在我的Rails 3项目中添加了一些Haml模板
git clone git://github.com/psynix/rails3_haml_scaffold_generator.git lib/generators/haml
Run Code Online (Sandbox Code Playgroud)
只是发现,当我尝试编辑其中一些文件时,这是一个子模块,所以我无法提交我在lib/generators/haml目录中所做的更改.现在我每次都git status得到
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: lib/generators/haml
#
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)
但git add lib/generators/haml没有效果.我真的只想拥有文件,而不是子模块,但我发现子模块无法摆脱:
> git rm --cached lib/generators/haml
rm 'lib/generators/haml'
> git status
# Changes to be …Run Code Online (Sandbox Code Playgroud) 我正在尝试确定Git存储库中共享代码的最佳实践.
到目前为止,我显然遇到了子模块,看起来他们 - 几乎 - 符合要求.我的项目是一个PHP MVC框架,结构简单:
哪个app文件夹包含特定于应用程序的控制器,模型,视图等,同时core包含一般用途的文件夹,例如登录控制器.该core.php文件本身是所有请求全球处理器.
因此,我在MVC框架的所有部署中的共享代码是core.php和core.
我可以看到如何core变成Git子模块,但不是core.php.
这甚至可能吗?我是否需要重新构建我的框架以便core.php驻留在core文件夹中,以便我可以将整个文件夹作为子模块,还是有更好的方法?
我不确定自己是如何陷入这个烂摊子的.但是我error: object 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22:contains entries pointing to null试图将我的存储库推送到GitHub时遇到了.全力推动:
[ashinn@puppet1 puppet]$ git push Counting objects: 27, done. Delta compression using up to 2 threads. Compressing objects: 100% (11/11), done. Writing objects: 100% (16/16), 5.67 KiB, done. Total 16 (delta 6), reused 14 (delta 4) error: object 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22:contains entries pointing to null sha1 fatal: Error in object error: unpack failed: index-pack abnormal exit To git@github.com:andyshinn/puppet.git ! [remote rejected] ganglia -> ganglia (unpacker error) ! [remote rejected] master -> master (unpacker error) …
我有一个用git版本化的网站目录.我使用子模块来处理Twitter Bootstrap,colorbox和lessjs等必需的库,因为我不应该跟踪源代码,而只跟踪我使用的代码版本.
现在我想部署项目,因此我也需要子模块代码.通过使用git archive我不从子模块获取源文件/代码.
以下三种方法尝试实现我想要的但是不能工作: 第一种方法
#!/bin/sh
export revision="$1"
export GIT_INDEX_FILE=".git/tmpindex"
rm -f "$GIT_INDEX_FILE"
git read-tree $revision
export up="$(pwd)"
read_one_level () {
export GIT_ALTERNATE_OBJECT_DIRECTORIES="$GIT_ALTERNATE_OBJECT_DIRECTORIES":$(
git submodule foreach 'echo "$up/$path/.git/objects"' |
grep -E -v '^(Entering|No submodule mapping found)' |
tr '\n' : |
sed 's/:$//'
)
git submodule foreach '
cd "$up"
subcommit=$(git rev-parse :"$path")
git rm --cached "$path"
git read-tree -i --prefix="$path/" $subcommit
' >/dev/null
}
while git ls-files -s | grep -q ^160000; do
read_one_level
done
git …Run Code Online (Sandbox Code Playgroud) 我想创建一个新的存储库作为我的项目的子模块.
通常,我创建一个Github仓库,然后使用该命令将其添加为子模块
git submodule add url_to_repo.git
有没有办法直接创建一个新的repo作为子模块而不先在其他地方创建repo(既不是本地也不是远程,例如在Github上)?
我有一个依赖于Twitter bootstrap 2.x的项目,但是,当我使用以下内容添加bootstrap作为子模块时:
git submodule add https://github.com/twbs/bootstrap.git
Run Code Online (Sandbox Code Playgroud)
这带来了最新版本的bootstrap.
我想为特定标签创建一个子模块,但还没有找到一种方法.这可能吗?
我有一些共享代码,我想在众多解决方案中分享.大多数示例使用命令行,但我想使用Visual Studio 2013(和/或TortoiseGit)执行此操作?
- SolutionShared
- .git
- Project1Shared
- Project2Shared
- Solution1
- .git
- ProjectFoo
- ProjectBar
- [SolutionShared]
- [Project1Shared]
- [Project2Shared]
- Solution2
- .git
- ProjectBaz
- ProjectQux
- [SolutionShared]
- [Project1Shared]
- [Project2Shared]
Run Code Online (Sandbox Code Playgroud)
我所做的是创建一个新的解决方案SolutionShared,在那里添加我的所有共享代码,并将其添加到自己的git仓库.然后我使用TortoiseGit(因为我无法弄清楚如何做Visual Studio)将该共享repo作为git子模块添加到Solution1和Solution2.
1.我在Visual Studio中做什么?
我的两个解决方案现在有一个SolutionShared目录.我只是在Visual Studio中添加它的两个子项目(Project1Shared和Project2Shared)吗?
2.如何从非共享项目中更改共享代码
如果我在其中一个非共享解决方案中并对子模块中的某些内容进行了更改,我该如何提交并将其推回到共享解决方案的repo(SolutionShared),以便所有引用它的解决方案都可以使用它?
在Travis Doc中,"设置"中有"SSH密钥"选项卡,但在我的帐户中没有.我需要在GitHub上添加SSH Key来克隆子模块.
我的帐户:

特拉维斯文件:

continuous-integration github ssh-keys git-submodules travis-ci
有很多网页在那里暗示让svn外部看起来像git子模块的hackish方法.我已经读过一些关于差异的说法,但这似乎不是很基础:
Git子模块链接到另一个项目的存储库中的特定提交,而svn:externals总是获取最新的修订.
为什么这种差异会使它们根本不相容?我们可以假设没有合理的默认值,例如大多数svn:externals指向永不移动的标签吗?
我有一个Ruby on Rails项目(使用git版本化),其中包含许多公共GitHub存储库中存在的外部JavaScript依赖项.将这些依赖项包含在我的存储库中的最佳方法是什么(当然,除了手动复制它们之外),这种方式允许我控制它们何时更新?
git子模块看起来是完美的方式,但是当在几个分支之间切换时会导致问题,其中许多分支不包含相同的子模块.
如果git子模块是最好的方法,我想我真正的问题是:我如何在许多分支中使用子模块而不是一直遇到这个问题:
my_project[feature/new_feature?]$ git submodule update
Cloning into public/javascripts/vendor/rad_dependency...
remote: Counting objects: 34, done.
remote: Compressing objects: 100% (29/29), done.
remote: Total 34 (delta 9), reused 0 (delta 0)
Receiving objects: 100% (34/34), 12.21 KiB, done.
Resolving deltas: 100% (9/9), done.
Submodule path 'public/javascripts/vendor/rad_dependency': checked out '563b51c385297c40ff01fd2f095efb14dbe736e0'
my_project[feature/new_feature?]$ git checkout develop
warning: unable to rmdir public/javascripts/milkshake/lib/cf-exception-notifier-js: Directory not empty
Switched to branch 'develop'
my_project[develop?]$ git status
# On branch develop
# Untracked files:
# (use "git add …Run Code Online (Sandbox Code Playgroud) git-submodules ×10
git ×8
git-archive ×1
git-svn ×1
github ×1
javascript ×1
ssh-keys ×1
svn ×1
travis-ci ×1