Git服务器部署报错:clone/pull失败,求正确操作命令指导
解决Git部署时的目录已存在及本地变更冲突问题
嘿,我来帮你搞定这个Git部署的麻烦事儿!
首先说第一个错误:你之前已经在服务器上克隆过这个仓库了,所以再用git clone肯定会报错——目标目录vtoday已经存在且不是空目录,Git可不会随便覆盖已有的内容。这时候你应该进入已有的项目目录,用git pull拉取最新代码,而不是重新克隆。
不过你执行git pull后又遇到了冲突问题,这是因为服务器上的本地文件有修改(或者新增了未被Git追踪的文件),和远程仓库的更新冲突了。下面分两种情况给你解决方案:
情况一:服务器上的本地变更完全不需要保留(比如是测试修改、误操作)
这种情况最简单,直接清空本地的修改和未追踪文件,然后拉取最新代码:
- 先进入项目目录:
cd vtoday
- 重置本地仓库到远程的最新状态,丢弃所有本地修改:
git reset --hard origin/main # 如果你的主分支是master,就把main改成master
- 删除所有未被Git追踪的文件和目录:
git clean -fd
- 保险起见,再拉一次最新代码(其实reset之后已经同步了,这步可选):
git pull origin main
情况二:服务器上的本地变更需要保留(比如是你特意做的配置修改)
那得先把这些变更妥善保存,再拉取合并远程更新:
- 先进入项目目录:
cd vtoday
- 保存已修改的文件:
先把修改过的文件加入暂存区,然后提交:
git add album/api/serializers.py album/api/urls.py album/api/views.py customuser/models.py entertainment/forms.py places/models.py places/urls.py places/views.py templates/places/places_list.html templates/vtv/video.html vtoday/settings/base.py vtoday/urls.py vtv/models.py vtv/urls.py vtv/views.py git commit -m "保存服务器本地的自定义修改"
- 处理未被追踪的文件:
- 如果这些文件是有用的,想加入Git管理:
git add entertainment/migrations/0012_remove_entertainment_main_photo.py media/places/pexels-photo-373965.jpeg places/api/__init__.py places/api/serializers.py places/api/urls.py places/api/views.py places/filters.py git commit -m "添加新增的未追踪文件到仓库"
- 如果暂时不需要这些文件,先移到临时目录:
mkdir ../vtoday_temp_files mv entertainment/migrations/0012_remove_entertainment_main_photo.py media/places/pexels-photo-373965.jpeg places/api/__init__.py places/api/serializers.py places/api/urls.py places/api/views.py places/filters.py ../vtoday_temp_files/
- 现在可以拉取远程的最新代码了:
git pull origin main
- 如果拉取时出现合并冲突,需要打开冲突文件,手动解决里面的
<<<<<<<、=======、>>>>>>>标记,然后提交合并结果:
# 解决冲突后,添加冲突文件 git add <冲突的文件名> git commit -m "合并远程更新与本地自定义修改"
- 如果之前移走了未追踪文件,现在可以移回来继续处理:
mv ../vtoday_temp_files/* ./
内容的提问来源于stack exchange,提问作者Jekson
相关产品推荐
相关产品推荐

