我是当前使用FTP部署我的代码并尝试移动git以帮助加快事物的Web开发人员。
我当前的项目看起来像:
- webapp1_live
-
webapp1_dev
-
webapp2_live
- webapp2_dev
live和dev文件都在本地存储(完整源(是因为:
- 我需要远程服务器来测试我的代码(在崇高文本中保存本地文件时,我对FTP有一个自动上传(
- 我使用diff工具来找出我在开发人员上修改了哪些文件并将其复制到实时目录(手动(,然后我必须手动ftp ftp ftp
我想使用git跟踪我的更改,但也要快速将我的更改从开发人员复制到实时目录(稍后我会弄清楚如何将这些更改ftp ftp ftp到我的远程服务器 - 我已经阅读了一些东西关于钩子等...这是一个不同的故事,我现在不想进入(
我尝试了崇高的合并来完成我想做的事情,并设置了开发人员并作为本地存储库生活,但是当我尝试将更改从开发人员推到现场时,我会得到这个错误:
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.
我已经阅读了有关裸存储库的信息,但据我了解,这没有工作目录,因此这意味着它没有文件的副本?!
可以通过使用不同的分支在git中轻松完成。
您当前的项目只会更改为:
- WebApp1
- WebApp2
实际上,我将它们分为两个存储库。然后,在分支上,Git默认使用所谓的master
-Branch。该分支可以解释为生产环境,这意味着该分支上的所有代码都应工作并保持稳定(您的实时文件夹(
然后,我将创建一个基于Master的第二个分支,称为develop
。这仅仅是主分支的副本,包括您要添加的所有新功能。您可以创建功能/热修正分支,然后可以将其合并到开发中,所有这些分支都可以在审核主分支后合并。
至于git,有一些命令可以帮助您这样做:
-
git init
-这将初始化一个默认的git存储库主分支。 -
git checkout -b develop
-这将创建一个开发分支从当前分支。 -
git checkout master
-这将将您的本地分支更改为主分支。 -
git merge develop
-而主人将合并所有从开发到主的更改分支。
在git
中设置您的当前项目- 打开git终端,然后在webapp1目录中打开
cd
。 - 用
git init .
初始化GIT存储库 - 运行
git status
以确保您在主分支上。 - 运行
git push -u origin master
以将您的主分支推到远程存储库。 - 运行
git checkout -b develop
从当前的主分支创建开发分支。 - 运行
git push -u origin develop
将您的主分支推到远程存储库。
现在,在遥控器上,您有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