我试图在同一台机器上为我的 ror 应用程序设置 git 服务器和部署服务器。我使用以下命令将项目从本地计算机推送到 git 服务器/部署服务器:
git remote add origin path_to_git_server
git push origin master
然后,在 git 服务器上,我在 ~/git/log.git/ref/heads
下找到了 'master' 文件,但我找不到所有的源代码。我需要指向源文件夹以便它在 apache web 服务器上工作。我在这里做错了什么?谢谢。
最佳答案
您可能创建了一个 git init --bare
存储库 - 这将不起作用,因为它只是 git 存储库而不是工作阶段。我打算将其设置为三台机器布局 - 但它可以在两台甚至一台机器上运行。
机器 A(您的开发机器)
机器 B(您的远程存储库)
机器 C(您的生产环境)
(但如果您在一台机器上同时拥有生产、开发和“远程”存储库,那也很好)
当您准备好推送到机器 B(Repo)时,您提交所有工作,恰到好处地暂存,然后执行 git push
(在执行远程添加等之后)此更新Bare 远程存储库,其中包含自上次推送以来您机器上的所有更改(将其视为将机器 a 上的 .git 文件夹的内容与远程存储库同步)
因为 Git 只关心文件内容的变化(实际上并不关心文件或文件夹本身 - 相信我 Git 不关心你的文件 - 只关心内容)它不会在机器 B 上存储文件就像你在你的机器上看到的“工作阶段”Git 将这些文件放在工作阶段供你使用和开发 - 但 Git 不关心它们 - 同样它只关心"file"内容的变化"自上次提交以来。
要部署您的代码,您需要转到机器 C 并克隆机器 B 上的存储库 - 这会将“.git”文件夹同步到该机器,然后根据它的所有内容构建后续文件/文件夹跟踪。克隆此存储库后,您可以通过 git pull
这就是它的本质。如果您在一台计算机上拥有所有内容,您可以执行以下操作:
~/projects/git_project (Your devel area)
/home/repo/git_project.git ("Remote" repo)
/opt/rails/git_project ("Production" machine)
在一台机器上拥有远程仓库是多余的,因为从技术上讲,您可以从
~/projects/git_project
到
/opt/rails/git_project
但只是保持示例一致
关于git push,源代码 stash 在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3137096/