我正在开发一个网站并不断从开发模式切换(其中代码中的每个URL都指向localhost,数据库名为“project”,用户名为“root”,空密码等)到生产模式(其中所有设置都适用于我的托管,真实密码,真实网址等),我最近才开始使用Git。
现在,我想建立一个代码准备上传到我的托管的分支,所以每次我想要更新我的网站时,我都不需要复制并手动更改所有内容。因此,如果我在代码中进行更改并在master
分支中提交,它将反映在上传代码中,而不会更改其他内容。
所以它会是:
Master -> ReadyForUpload
所以我的问题是,当使用Git时,每个分支是否存储在物理存储中,就像目录中的每个文件一样?是否可以将分支导出到目录?
顺便说一下,我正在使用Git extensions for Windows。
答案 0 :(得分:6)
没有。一些其他版本控制系统(例如Subversion)将分支存储为子目录。在git中,你有一个工作区域,并在其中更改你工作的分支,
例如
git branch ReadyForUpload
git checkout ReadyForUpload
似乎没有任何改变,但您现在正在ReadyForUpload分支中工作。
如果你然后做了一些更改并提交它们并且你做了
git checkout Master
你将回到masterbranch并且ReadyForUpload中的更改已经消失(即,只是存储起来)
当然,如果您出于某种原因希望同时拥有两个分支,您可以将您的存储库克隆到另一个目录并在那里检出另一个分支 - 使用git pull或git push在适当的地方同步它们
答案 1 :(得分:3)
每个分支都存储在物理存储中,就像每个目录一样 文件在里面?
答案是否定的!
是否可以将分支导出到目录?
是。有几种方法可以进行导出。但是,如果您打算对该分支进行小的修改/调查,并且经常希望在该分支上工作,因为令人不安的生产问题与您的开发一起出现(在主分支中)。我建议你从原点
再创一个克隆例如,如果您的中心同意来源是git://github.com/my_org/my_proj.git
你可能会用
克隆开发WDgit clone git://github.com/my_org/my_proj.git
然后你应该有一个制作
git clone git://github.com/my_org/my_proj.git my_proj_production
cd my_proj_production
git checkout -b release_branch
git push origin release_branch
在my_proj_production
中,您应该修改您的网址,密码等,以反映生产情况。
然后,每当你将开发(master
)和生产(release_branch
)中的东西合并时,你应该在my_proj
dir中制作一个git push
和my_proj_production
dir,你将做
git remote update
git merge origin/master
第一行确保您从远程仓库更改为本地HDD(作为.git/objects
下的小文件,第二个命令确保您所做的更改合并到您的release_branch(以及网址,密码,不会在你的release_branch中重新引入。)
如果您(还)没有中央存储库,请发表评论,我会调整答案以反映这种情况。
答案 2 :(得分:0)