Git: 三机环境无法获取文件推送到版本库

Git: can't get files to push up to repository in three machine environment

我们正在努力做的事情:

我们正在尝试使用 git 来创建高效的开发流程并保留我们网站的当前备份。我们有三台机器在循环中:

我们想从 Production 服务器克隆一个裸存储库到我的 Workstation 以保留当前备份。

我想在我的本地机器上创建开发分支来更改我想拉入 Development/testing 服务器上的存储库中的文件。这样我就可以使用这个存储库作为测试步骤来合并东西并确保它们正常工作。

一旦一切正常,我想将新分支拉到 Production 服务器并合并以完成对实时站点的更新。然后一旦到位,下一个备份将捕获最后更新。

问题:

我们尝试从 production 服务器上的 --bare repo 开始并将其克隆到其他两台机器上。这可以在机器上获取回购协议,但不会提取任何已添加和提交到 --bare 回购协议的文件。我们也无法将更改推送到生产服务器。

我们也试过只在生产服务器上使用 git init,但问题仍然存在。我们使用以下语法:

git init <repo>   or   git init --bare <repo>
git add . 
git commit -m "message"
git clone ssh://user@server.com:/path/below/repo.git or repo/repo.git
git remote add <name> <repo>
git pull <remote>
git fetch <remote>

问题:

我们是否没有正确使用 git 作为生产工具,或者我们在使用 git 时犯了一些语法或其他错误?

GIT 工作流的设置可能是一件令人困惑的事情。重要的是要理解 git "push" 和 "pull" 与 "remotes" 一起工作。您最好在安全位置使用单个远程服务器(可以使用“--mirror”选项单独完成备份,但不要将其用于提交)。

第一步;创建一个 "bare" 存储库,所有开发都将在这里结束;

git init --base /path/to/repo/websiterepo.git       <- this is a bare repo..

除了推送和拉出之外,不要将裸仓库用于任何事情。不要操纵它,不要 "git add" 或 "git commit" 来避免损坏它。

第二步;将您的网站转换为 git 存储库,并使裸存储库可用于推送和拉取;

cd /path/to/website
git init
git add .
git commit -m 'Initial Commit'
git remote add origin /path/to/repo/websiterepo.git
git push -u origin master:master

第三步;在 "backup server"

上创建一个 "backup"
cd /somewhere/safe
git clone --mirror user@website:/path/to/repo/wepsiterepo.git

(以后使用以下命令刷新备份)

cd /somewhere/safe/websiterepo.git
git remote update

第四步;设置您的 DEV 位置

cd /home/me/websitedev
git clone user@website:/path/to/repo/websiterepo.git website
cd website
git checkout master
git checkout -b devbranch  <- work on dev branch
git add changes
git commit -m 'my changes'
git push -u origin devbranch:devbranch

第五步;设置您的测试位置

cd /home/me/websitedev
git clone user@website:/path/to/repo/websiterepo.git website
cd website
git checkout devbranch

工作流..

  1. 在 /home/me/websitedev/website
  2. 中进行更改
  3. git 添加更改,git 提交,git 推送(将推送到 devbranch)
  4. 要试机了; git结帐大师; git拉; git 合并开发分支;执行测试(如果 git pull 没有拉下 devbranch 更改,使用 git fetch --all)
  5. 更新生产回购;得到推送源 master:master
  6. 更新制作; git拉

希望对您有所帮助。