Git分支存储在哪里?

时间:2012-11-30 08:22:54

标签: git github branch

我正在开发一个网站并不断从开发模式切换(其中代码中的每个URL都指向localhost,数据库名为“project”,用户名为“root”,空密码等)到生产模式(其中所有设置都适用于我的托管,真实密码,真实网址等),我最近才开始使用Git

现在,我想建立一个代码准备上传到我的托管的分支,所以每次我想要更新我的网站时,我都不需要复制并手动更改所有内容。因此,如果我在代码中进行更改并在master分支中提交,它将反映在上传代码中,而不会更改其他内容。

所以它会是:

Master -> ReadyForUpload

所以我的问题是,当使用Git时,每个分支是否存储在物理存储中,就像目录中的每个文件一样?是否可以将分支导出到目录?

顺便说一下,我正在使用Git extensions for Windows。

3 个答案:

答案 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

你可能会用

克隆开发WD
git 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 pushmy_proj_production dir,你将做

git remote update
git merge origin/master

第一行确保您从远程仓库更改为本地HDD(作为.git/objects下的小文件,第二个命令确保您所做的更改合并到您的release_branch(以及网址,密码,不会在你的release_branch中重新引入。)

如果您(还)没有中央存储库,请发表评论,我会调整答案以反映这种情况。

答案 2 :(得分:0)

如果您不熟悉Git,可能需要从git flow开始。它为您提供了一个很好的工作流程来维护master分支和develop分支,而不会陷入git的复杂性

详细了解here