即使其他人在不使用git的情况下更新网站,我是否可以使用git来管理网站?

时间:2016-01-09 15:12:25

标签: git version-control ftp server ftp-server

所以,假设我有一个可以通过ftp访问的Web服务器。大多数人使用Dreamweaver更新它,我通过在计算机和服务器之间手动复制和粘贴来更新。我的问题是,我可以使用git来管理网站(而不必手动复制/粘贴),而其他人则使用其他方法更新它吗?

  • 我无法在服务器上安装太多。我想只在服务器上放置文件来设置它。
  • 我不想手动复制和粘贴上传到服务器。
  • 我不想无意中撤消不使用git的其他人的更改,也不想让他们使用git。
    • 那就是说,如果我和其他人同时编辑网站,我会想利用git的合并功能。

我该如何设置? (另外,我可以将哪些脚本放在我的计算机上以使其更容易(钩子和非钩子)?(我知道如何制作它们,我只想提示我应该为这个工作流程做什么。))

注意:如果重要的话我使用linux。 (另外,我在命令行中使用git。)

注意:我可以手动执行一些通常不需要的东西(例如将我的队友变更为提交)。这是我想避免的手动复制和粘贴。

4 个答案:

答案 0 :(得分:2)

在服务器上安装git时,您可以做的是在本地计算机上维护服务器网站的本地副本rsync。 如果您的服务器支持sftp,您可以使用csync(无需在服务器端安装它):它优于rsync和双向。

然后你可以拥有自己的git repo,每当你想要添加或比较网站的变化时,你可以切换分支,然后执行:

git --work-tree=/path/to/csync/folder status .

比较您当前的回购索引和反映该网站的同步本地文件夹。

您的git仓库中有两个分支,一个用于您当前的工作,另一个用于将该网站合并到回购中。

您可以在本地合并这两个,当您准备好后,使用csync< ed ed文件夹作为工作树检出仓库

git --work-tree=/path/to/csync/folder checkout HEAD -- .

答案 1 :(得分:1)

  1. 以某种方式设置一个方法,您可以运行影响FTP服务器的git命令(在您的计算机上),以及能够推送到FTP服务器(例如使用rsync / {{1} },mounting the ftp server locallythis结合了一些初始复制和粘贴功能。)
  2. 在服务器git repo中,通过命令csyncreceive.denyCurrentBranch设置为updateInstead。见Push to deploy
  3. 现在,当您从本地仓库推送服务器时,如果服务器已被修改,您将收到类似这样的错误
    ! [remote rejected] master -> master (Working directory has unstaged changes) error: failed to push some refs to '../remote'
    
    要解决此问题,您必须提交您的团队成员在远程服务器上所做的更改。你可能想要挑选这个。然后转到第4步。
  4. 如果本地服务器与其git分支同步,您只需按下它,它的工作树也将更新。 (请记住,在git config receive.denyCurrentBranch "updateInstead"等之前,您仍然需要执行git pull等事情。)

答案 2 :(得分:0)

我在一个网站上使用两台服务器来实现这一目标。生产,只有FTP访问和开发具有完全访问权限。我推动开发服务器,我有post-receive脚本,checkout bare repo到临时文件夹,而不是调用Python脚本,它将代码上传到FTP。我不知道允许其他人使用FTP的方法。你应该告诉他们使用git,它对每个人来说都更容易,你也可以更好地控制代码。如果您有此设置,则只能有一个分支推送到生产服务器,而其他分支只是开发。

答案 3 :(得分:0)

我没有这样做,看看它有多可用,但你可以使用例如curlftpfs挂载远程目录。我希望这能为您提供一些使用它的替代方案:

  1. 不加修改,仅包含工作文件,并在.git环境变量指定的目录下本地存储(即GIT_DIR的内容)。 core.worktree应配置为ftp mount。
  2. 您可以将其作为.git子目录的真实存储库,执行git init等。
  3. 使用.git file而不是使用GIT_DIR环境变量。
  4. 在进行一些手动设置之后,可以使用git worktree进行管理,因为目前没有将现有目录自动转换为工作树。
  5. 很大程度上取决于你是否是唯一的git用户,或者是否有其他人在ftp目录中对你的私人更改感到困扰。