如何将git与dev和live文件的本地副本一起使用

时间:2019-05-08 10:43:48

标签: git github repository local

我是一名网络开发人员,目前正在使用FTP部署我的代码,并试图移至git以帮助加快速度。

我当前的项目如下:

  • webapp1_live
  • webapp1_dev

  • webapp2_live

  • webapp2_dev

实时文件和开发文件都存储在本地(完整的源代码),原因是:

  • 我需要远程服务器来测试我的代码(将本地文件保存为Sublime Text时,我可以自动上传到FTP)
  • 我使用diff工具找出我在dev上修改过的文件,然后将它们(手动)复制到活动目录中,然后我必须在活动服务器上手动通过FTP传输文件

我想使用git跟踪更改,但同时也将更改从开发人员快速复制到实时目录(稍后我将弄清楚如何通过FTP将这些更改复制到远程服务器-我已阅读了一些内容关于钩子等等……这是一个不同的故事,我现在不想讲这个)

我已经尝试了Sublime Merge来做我想做的事,然后我将开发人员设置为本地存储库,但是当我尝试将更改从开发人员推送到现场时,却出现此错误:

remote: error: refusing to update checked out branch: refs/heads/master        
remote: error: By default, updating the current branch in a non-bare repository        
remote: is denied, because it will make the index and work tree inconsistent        
remote: with what you pushed, and will require 'git reset --hard' to match        
remote: the work tree to HEAD.

我已经阅读了裸存储库,但是据我了解,该存储库没有工作目录,这意味着它没有文件副本?!

1 个答案:

答案 0 :(得分:0)

这可以通过使用不同的分支在git中轻松完成。

您当前的项目将变为:

  • webapp1
  • webapp2

事实上,我将它们分成两个存储库。 然后关于分支,git默认使用所谓的master-branch。 该分支可以解释为生产环境,这意味着该分支上的所有代码均应正常工作(您的活动文件夹)

然后我将基于主节点创建第二个分支,称为develop。这仅是master分支的副本,包括要添加的每个新功能。您可以创建功能部件/修补程序分支,然后可以将其合并到开发中,并在查看主分支后将其全部合并。

对于git,有一些命令可以帮助您做到这一点:

在git中设置当前项目

  1. 打开git终端,然后cd进入webapp1目录。
  2. 使用git init .初始化git存储库
  3. 运行git status以确保您位于master分支上。
  4. 运行git push -u origin master将您的master分支推送到远程存储库。
  5. 运行git checkout -b develop从当前的master分支创建一个develop分支。
  6. 运行git push -u origin develop将您的master分支推送到远程存储库。

现在,在远程上,您有2个分支机构来保存您的实时环境和开发环境。

进行更改

  1. 切换到开发分支(git checkout develop
  2. 从远程开发中提取最新版本:git pull
  3. 进行更改
  4. 添加文件并更改索引:git add -A
  5. 提交对索引的更改:git commit -am "your change message"
  6. 将更改推送到远程开发分支:git push
  7. 一旦一切就绪,就可以为实时环境切换到master分支:git checkout master
  8. 从远程主服务器获取最新更改:git pull
  9. 将您的developer分支合并到master分支:git merge develop
  10. 将合并推送到远程主分支:git push