6

我在一个网站上工作并不断从开发模式(代码中的每个 URL 都指向本地主机,数据库名为“项目”,用户“root”,空密码等)切换到生产模式(我的主机、真实密码、真实 URL 等所有设置都可以正常工作),而我最近才开始使用Git

现在,我想为准备上传到我的主机的代码创建一个分支,这样我就不必在每次想要更新我的网站时复制并手动更改所有内容。因此,如果我对代码进行更改并在master分支中提交,它将反映在用于上传的代码中,而无需更改其他内容。

所以它会是:

Master -> ReadyForUpload

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

顺便说一句,我正在使用适用于 Windows 的Git 扩展

4

3 回答 3

6

不会。其他一些版本控制系统(例如 Subversion)将分支存储为子目录。在 git 中,您有一个工作区域,并更改您在其中工作的分支,

例如。

git branch ReadyForUpload
git checkout ReadyForUpload 

似乎没有任何变化,但您现在正在 ReadyForUpload 分支中工作。

如果您然后进行一些更改并提交它们并且您执行

git checkout Master

您将回到主分支,ReadyForUpload 中的更改消失了(也就是说,只是存储了)

当然,如果您出于某种原因更喜欢同时使用两个分支,您可以将您的存储库克隆到另一个目录,并在那里签出另一个分支 - 使用 git pull 或 git push 在适用的情况下同步它们。

于 2012-11-30T08:28:52.537 回答
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_projdir make agit push并且在my_proj_productiondir 你应该做

git remote update
git merge origin/master

第一行确保您从远程仓库获取更改到本地 HDD(作为 下的小文件.git/objects,第二个命令确保您所做的更改合并到您的 release_branch 中(并且 url、密码等不会在您的释放分支)。

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

于 2012-11-30T08:45:50.113 回答
0

如果您是 Git 新手,您可能希望从git flow开始。它为您提供了一个很好的工作流程来维护一个master分支和一个develop分支,而不会涉及到复杂性git

在此处阅读更多信息

于 2013-10-04T06:52:16.953 回答