我是一名网络开发人员,目前正在使用FTP部署我的代码,并试图移至git以帮助加快速度。
我当前的项目如下:
webapp1_dev
webapp2_live
实时文件和开发文件都存储在本地(完整的源代码),原因是:
我想使用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.
我已经阅读了裸存储库,但是据我了解,该存储库没有工作目录,这意味着它没有文件副本?!
答案 0 :(得分:0)
这可以通过使用不同的分支在git中轻松完成。
您当前的项目将变为:
事实上,我将它们分成两个存储库。
然后关于分支,git默认使用所谓的master
-branch。
该分支可以解释为生产环境,这意味着该分支上的所有代码均应正常工作(您的活动文件夹)
然后我将基于主节点创建第二个分支,称为develop
。这仅是master分支的副本,包括要添加的每个新功能。您可以创建功能部件/修补程序分支,然后可以将其合并到开发中,并在查看主分支后将其全部合并。
对于git,有一些命令可以帮助您做到这一点:
git init
-这将使用默认值初始化git存储库
主分支。 git checkout -b develop
-这将创建一个开发
从当前分支分支。 git checkout master
-这将
将您的本地分支更改为master分支。 git merge develop
-
在master上时,会将开发中的所有更改合并到master
分支。cd
进入webapp1目录。git init .
初始化git存储库git status
以确保您位于master分支上。git push -u origin master
将您的master分支推送到远程存储库。git checkout -b develop
从当前的master分支创建一个develop分支。git push -u origin develop
将您的master分支推送到远程存储库。现在,在远程上,您有2个分支机构来保存您的实时环境和开发环境。
git checkout develop
)git pull
git add -A
git commit -am "your change message"
git push
git checkout master
git pull
git merge develop
git push