我目前正在尝试遵循 Pro Git 书中提到的基于小型项目的工作组:http://progit.org/book/ch5-2.html http://progit.org/book/ch5-2.html
所以,这是我的设置:
[Live Website Folder]
| |
| |
Developer1 Developer2
我实现这一目标的方法是执行以下操作:
- git init --shared=0777
- git克隆/live/网站developer1
- git clone /live/网站开发人员2
我能够成功克隆我的项目,然后我进入developer1
文件夹。在这里我对我的文件进行更改index.html
。一旦我做了这些改变,我就会:
git add index.html
git commit -m 'Modified index.html --developer1'
git push
现在当我去我的/live/website
目录并执行git status
,它正确地告诉我该文件index.html
被修改。当我做:
git add index.html
git commit -m 'Modified index.html by developer1'
它成功地进行了提交,但是当我尝试vi index.html
,我看到的文件是原始/未修改的文件。我在该文件中没有看到developer1 所做的更改。这是预期的行为吗?
What git status
告诉你的是index.html
与 git 索引中的内容不同。
当你推动之后,你的/live/website
存储库包含更新的index.html
在索引中,但是旧的index.html
在工作副本中。你需要做git reset --hard HEAD
其次是git checkout -f
inside /live/website
将工作副本重置为与 HEAD 提交相同。
我建议您稍微修改一下您的设置。添加一个staging
存储库是裸露的并将更改推送到其中。添加运行的更新后钩子git pull staging master
inside /live/website
。这将确保在提交提交后立即更新实时网站。
在辉煌的 ascii 艺术中:
/live/website
|
|
/path/to/staging (bare)
| |
| |
dev1 dev2
编辑:更新为正确的命令序列以修复工作副本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)