所以我几天前开始使用 Git. (派对很晚 – 不要责骂:)).真正开始熟悉基本命令,想法和工作流程.然而,子模块真的让我的大脑有所作为.我正在尝试为 FuelPHP的 GitHub贡献代码,我可以使用一些指导和提示.

我在终端中运行以下命令:

//1: clone the repository from Fuel's github.
git clone git://github.com/fuel/fuel.git

//2: move into the main fuel directory
cd fuel

//3: initilize the submodules (populate .git/config with submodule data)
git submodule init

//4: download the submodules...
git submodule update

//5: move into the core directory (which is a submodule).
cd fuel/core

//6: change branch from (*no branch) to 1.1/develop
git checkout 1.1/develop

//7: open random file in text editor + make some small change (i.e. typo) + save file.
sudo gedit classes/autoloader.PHP

//8: add this file to the staging area.
git add classes/autoloader.PHP

//9: commit this file under 1.1develop branch.
git commit -m "im committing a submodule"

//10: push the new commit to MY (not fuel's) github repo (yes i've renamed the repo).
git push git@github.com:jordanarseno/fuel-core.git

//11: changes are reflected on github,looks good.

//12: back way out to fuel again. time to push the submodule commit separately.
cd ../../

//13: add the fuel/core submodule to the staging area.
git add fuel/core

//14: commit the submodule change.
git commit -m "submodule pushed. pushing super Now."

//15: push the commit to MY (not fuel's) github repo.
git push git@github.com:jordanarseno/fuel.git

具体来说,我的问题是:

>这是使用子模块的正确工作流程吗?这是你会做的吗?
>为什么git会拉下子模块中的1.1 / develop分支,但是默认情况下将我设置为* no branch?我可以修改此行为吗?
> Fuel子模块的哪一部分告诉git拉1.1 /开始开始?还有其他分支(1.1 / master,1.0 / develop等…).
>为什么我们不能在第11步称它为一天?子模块推动工作正常.我之后推动超级因为手册tells me it’s a good idea.事实上,前往GitHub并看着我的超级,我做了一个提交.然而,This commit 845de87似乎只是对Fuel的超级而非MY超级的参考.它不应该链接到MY repo而不是它们吗?
>在超级节目中运行cat .git / config:

连同所有子模块……

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git://github.com/fuel/fuel.git`

在核心子模块中运行cat .git config显示:

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git://github.com/fuel/core.git

将这些网址更改为我自己在GitHub上的回购是否明智?无论如何,燃料拒绝推动.如果我执行子模块更新,它们会被覆盖吗?

我在Fuel’s Forums也问过这个问题,但这更像是一个普遍的问题,这里有更多的叮当声……谢谢!

>是的,如“ true nature of submodules”中所述
> git子模块是对特定提交(SHA1)的引用,而不是分支,因此您始终处于分离模式(与只读用法兼容).
换句话说,git子模块更新检出特定的提交,而不是分支的提示.
.gitmodule文件将包含子模块repo的引用.并且特定的SHA1将作为特殊提交(模式160000)记录在父存储库中.当你’git submodule’添加’一个新的子模块时,它会记录当前检出其他repo的SHA1(无论它的分支是什么).
如果要进行更改,则必须签出该子模块仓库中的分支(现有分支或新分支:在这两种情况下,您都会将任何新更改推回到该子模块的远程仓库).
另一种选择是 git slave.
>请参阅2. git分支中列出的其他分支是子模块存储库中存在的本地分支,如果您在一个点执行git pull,则包括每个 tracking branch的一个本地分支.
>因为父级仍然引用子模块的初始SHA1.
但由于您已对其进行了修改,因此需要更新SHA1.
请记住,子模块本身就是一个git repo …绝对不知道它被用作子模块.因此有必要在父回购中记录该回购的新状态(唯一一个跟踪其子模块的状态).
你的第一个git push完全是子模块repo的内部操作(父repo根本看不到它).
对于父repo,子模块repo是一个“黑盒子”,只有一个远程地址和一个SHA1.无论在子模块中做什么都没有对父进程产生任何影响,父进程只会检测子模块树的SHA1的变化.
>使用 forks可能有所帮助
请参阅“ Changing remote repository for a git submodule”以更新子模块远程URL.

php – Git子模块工作流建议的更多相关文章

  1. 在Xcode中安装的git中禁用osxkeychain凭证帮助程序

    解决方法如果您的问题主要关注的是安全性,并且您希望每次都输入密码,那么我会接受钥匙串以适应您的目标>进入osx钥匙串应用程序,>如果您使用的是https,请查找服务器名称>通过单击更改其设置,并在选项卡“访问控制”标记“询问钥匙串密码”下>如果需要,请从列入白名单的应用程序列表中删除git-credential-osxkeychain应用程序.请注意,在Linux上,默认行为也是自动发送凭据.

  2. ios – Xcode Server 4.0 git从构建触发脚本推送

    我为一个托管在github上的项目安装了一个XcodeBot.我按照步骤和设置机器人来使用我现有的SSH密钥.验证成功,项目结算和建立.然后,我在预触发器操作中添加了一个shell脚本,它增加了plist中的版本,将其标记,并将该更改提交到github.但是当我尝试从shell脚本执行gitpush时,我得到:–推送到git@github.com:spex-app/spex-ios.git权限被拒

  3. xcode – 为什么Jenkins在我的Mac上运行不会连接到本地的git repo?

    我正在尝试使用Jenkins实现自动化构建,用于我的iOS项目.我添加了Git插件,但是一旦我尝试将git的URL放在项目的git配置中,它会在下面的屏幕截图中显示错误.这里Jenkins不能从repo克隆到其工作空间.解决方法在大多数情况下,gitbarerepo有扩展名.git我的意思是(其他)/test1看起来不正确,我认为应该是(其他)/test1.git在我的mac上有同样的错误.

  4. 哪些Xcode项目文件可以从我的git repo中排除?

    我正在开发一个iOS项目,并使用git进行版本控制.我正在与另一位开发人员合作.我应该保留哪些Xcode项目文件在repo中,哪些可以排除,这样不会对其他开发者产生负面影响?这里有一些非代码文件,git告诉我已被修改或添加…

  5. xcode – 不能推送到远程git存储库

    所以我一直在麻烦把我最近的提交到我在Bitbucket上设置的远程仓库.我最初使用Xcode,并且已经要求thisquestion,并建议使用终端来推送而不是Xcode.现在,我尝试了终端,但是并没有解决问题.但是当我尝试gitpush时,它确实给了我更详细的错误信息我是这些远程存储库的新手,并且Xcode上的一切都正常工作,所以如果您建议我在终端中执行某些操作,如果您描述了如何执行此操作,这将有

  6. Xcode 4.5自动更改.xib文件

    由于我升级到Xcode4.5,我发现它会自动删除我访问的每个xib文件的一部分.这是一节:我几乎可以这样生活,但是当我再次访问该文件时,我发现还有更多的“自动”更改.他们变得更加多样,难以表征,所以我不会包括例子,除非我真的需要.我不明白这里发生了什么.我正在寻找两个答案之一:>有没有办法禁用这个?>为什么会发生这种情况,有没有办法强制Xcode将这些更改应用于所有xib文件,以便我可以做到这一点?

  7. ios – XCode中的源代码管理是一场噩梦 – 任何人都可以提供建议?

    使用Git与Xcode(4.3)是一个真正的噩梦.这是一个场景…我承诺我的变化–好的.我跳回主人拉动变更.突然间我得到:是吧?解决方法我只是添加这些文件到我的.gitignore文件.没有必要与其他开发人员分享.所以我有:在.gitignore中请注意,您链接的stackoverflow问题说不排除project.pbxproj,但它并不表示不排除*.xcworkspace.但是,我目前没有使用工作区功能.如果您使用工作区功能,则可能需要包含这些文件,但忽略xcuserdata文件.

  8. Xcode表示“未提交的更改”每当我尝试git拉或推

    我在我的项目中使用git,每当我尝试从Xcode中抽出时,我得到“未提交的更改”,并阻止我拉/推.我尝试提交并找到一个扩展名为*.xcuserstate的文件,每当我打开/滚动到Xcode中的任何项目文件时,这个文件被修改.这让我没有任何选择,只能做一个包含该文件的单一提交,该文件用无意义的提交填充git提交日志.这是有办法阻止这种行为吗?

  9. ios – 将watchkit扩展添加到项目之后,以前添加的第三方框架不再起作用

    我有一个正在工作的应用程序,一切都很好.当我转到File->New->Target并添加一个watchkit应用程序/扩展名时,由于“Module”Crashlytics“找不到”,构建立即被破坏.目前,Crashlytics是使用@importCrashlytics访问的,我检查了项目,pbxproj文件具有引用到正确位置的crashlytics框架,Crashlytics.h在项目中可见.我尝试切换到#import“Crashlytics.h”,只是为了看看是否可能与模块有关,而不是简单地导入标题,但

  10. xcode git无法从远程存储库中提取更改

    我正在与另一个开发人员开发iPhone应用程序.我们的git仓库位于远程服务器上.所以我们正在使用我们的工作副本,然后我们一个接一个提交,拉,推,我们把我们的本地工作副本与服务器和彼此同步.一切都很好,直到今天.其他开发人员成功将他的更改推送到远程存储库,现在轮到我了:提交,从远程存储库中提取更改,可能会以某种方式合并它们,然后将我的工作副本推送到服务器.但是当我想要改变(使用xcode的内置gi

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部