目录
任务一 - 将远程仓库更新好的项目更新到本地
# 进入项目目录,列出所有分支,当前只有master分支
$ cd /Users/ZMoKu/customize/personal/project/perblog
perblog ZMoKu$ git branch
* master
# 查看项目最新状态:项目所在分支、变更文件,确认分支为masters
perblog ZMoKu$ git status
On branch master
....
# 查看项目最新修改情况
perblog zmoku$ git log -5
# 获取远程项目
perblog zmoku$ git fetch
# 创建develop分支
perblog zmoku$ git branch develop
# 创建并切换至自己的develop分支
perblog zmoku$ git checkout -b develop_zmoku
等价于
perblog zmoku$ git branch develop_zmoku
perblog zmoku$ git checkout develop_zmoku
# 确认当前所在分支
perblog zmoku$ git status
On branch develop_zmoku
...
疑难解决/小提示
1. 分支用处
为了确保代码的安全性,自行更改项目时在develop_zmoku中进行,完成并经过审核后提交到develop分支中,最终由项目master合并入项目主分支master中。完成最终提交后,需要对develop_zmoku分支进行清理。
如果项目多人合作,会出现本地分支和远程分支无法匹配的情况,是因为远程项目更新了新的分支内容,本地仓库却仍是旧的项目,导致分支不对等,此时需要先把远程仓库的项目更新下来,再重新提交自己修改的分支。
对项目进行编辑时,先建立自己的分支。为了预防期间文件的丢失,还可以对修改进行备份。
# 备份分支(在master的基础上新建zmoku_master分支并继承master的内容)
$ git checkout master
$ git branch zmoku_master
# 将某远程仓库中的主分支master内容强制覆盖到另本地分支【谨慎】
$git checkout -b zmoku_develop
$ git reset --hard origin/master
2. 项目中的扩展包获取失败遇到的问题及解决方案
需求:gitee新建Blog仓库,将仓库克隆到本地,复制本地项目wx并提交到Blog仓库中。
# 1 新建文件夹,搭建虚拟化环境,并下载项目至本地
$ cd ~/customize/personal/courses/ctohy/project
project zmoku$ mkdir z_blog
project zmoku$ virtualenv blog_env
project zmoku$ source blog_env/bin/activate
project zmoku$ cd z_blog
(blog_env) z_blog zmoku$ git clone git@gitee.com:ZMoKu/blog.git
# 2 此时文件夹中的内容为
(blog_env) z_blog zmoku$ ls
blog
(blog_env) z_blog zmoku$ cd blog
(blog_env) z_blog zmoku$ ls
.gitignore LICENSE README.en.md README.md
#3 复制本地项目到仓库中。【虽然本地也有,但我并没有直接ctrl+c/v,而是直接克隆远程仓库的项目。悲伤的开始~】
(blog_env) z_blog zmoku$ cd blog
(blog_env) blog zmoku$ git clone SSH
(blog_env) blog zmoku$ ls
wx
# 4 由于wx项目中的拓展包exlib无法直接克隆,此时exlib文件夹为空。这里采用合并的方式加载。
(blog_env) blog zmoku$ cd wx
(blog_env) wx zmoku$ git submodule init
(blog_env) wx zmoku$ git submodule update
(blog_env) wx zmoku$ git submodule add https://gitee.com/skyviewfund/exlib.git exlib
此时报错,显示exlib已存在
'exlib' already exists in the index
# 5 先删除空文件夹exlib
(blog_env) wx zmoku$ rm -rf exlib
git status查看当前状态:deleted: exlib,重复#4,it submodule add https://gitee.com/skyviewfund/exlib.git exlib,仍然报错
'exlib' already exists in the index
# 6 查出问题是存在隐藏文件.git冲突,删除.git
(blog_env) wx zmoku$ cd .git
(blog_env) .git zmoku$ ls
HEAD config description hooks index info logs objects packed-refs refs
(blog_env) .git zmoku$ cd ..
(blog_env) wx zmoku$ rm -rf .git
(blog_env) wx zmoku$ git status
# 7 由于只是需要wx项目中的代码来组建自己的项目,这里需要把wx复制到blog中
(blog_env) wx zmoku$ cd ..
(blog_env) blog zmoku$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
(blog_env) blog zmoku$ mv wx/* ./
# 8 提交更新
(blog_env) blog zmoku$ git add .
(blog_env) blog zmoku$ git commit -m 'add wx'
可通过git log查看变更
# 9 重新合并第三方库exlib
(blog_env) blog zmoku$ git submodule add https://gitee.com/skyviewfund/exlib.git exlib
加载成功
# PyCharm打开运行项目,报错:没有‘exlib.rest’模块
# 与本地成功运行的项目wx进行对比,发现是utils/response.py文件不一致。【猜测应该是后来本地项目修改好后未更新到远程仓库中,导致克隆下来的仍然不能运行】
# 重新更改blog项目中的内容,这次直接使用能正确运行的本地项目wx的内容进行替换。其中,exlib文件不需要替换。
# PyCharm重启项目运行,报错:缺失xeger包和regex包
(blog_env) blog zmoku$ pip install xeger
(blog_env) blog zmoku$ pip install regex
# 【run】运行成功!
# 【run】->【edit configurations...】->【Parameters: runserver】运行成功!
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
【OS:项目复制期间还发生了项目丢失的情况,直接导致PyCharm不能识别项目,具体原因由于不是很清楚就不过多记录,解决办法是重建项目】
总结:
1. 在有成功运行的源代码的前提下,新项目出现bug时可与源代码进行对照,从而排查问题
2. 每次进行git操作后,可先git status查看状态或git log查看更改日志,确保文件没有丢失。