Python中如何实现本地Windows与远程Linux之间的Git文件同步
本地可以通过 ssh 用户名和密码连接远程服务器,使用什么方式可以同步本地和对应的远程文件( git 版本控制的 Python 项目),使用过 pycharm 的 deployment 功能,但 win 和远程的 linux 文件同步会影响 git 控制(即被修改的文件被git识别为整个文件被修改)。
ps : 本地 win 环境,远程服务器是 Linux 环境。
Python中如何实现本地Windows与远程Linux之间的Git文件同步
fabric ,可以研究下。
要实现本地Windows与远程Linux之间的Git文件同步,核心是建立远程仓库并配置SSH密钥认证。以下是具体步骤:
1. 在Linux服务器初始化Git仓库
# 登录Linux服务器
ssh user@remote_server
# 创建并初始化裸仓库(推荐用于中央仓库)
mkdir /path/to/project.git
cd /path/to/project.git
git init --bare
2. 在Windows本地配置SSH密钥
# 生成密钥(如果已有可跳过)
ssh-keygen -t rsa -b 4096
# 将公钥复制到Linux服务器
ssh-copy-id user@remote_server
# 或手动将~/.ssh/id_rsa.pub内容添加到Linux的~/.ssh/authorized_keys
3. 本地Windows仓库设置远程地址
# 进入本地项目目录
cd /d/your_project
# 初始化本地仓库(如果尚未初始化)
git init
# 添加远程仓库地址
git remote add origin user@remote_server:/path/to/project.git
# 首次推送
git add .
git commit -m "Initial commit"
git push -u origin master
4. 日常同步操作
# 从远程拉取更新
git pull origin master
# 推送本地更改
git add .
git commit -m "Update description"
git push origin master
5. 如果已有本地仓库需要迁移
# 查看当前远程地址
git remote -v
# 修改远程地址
git remote set-url origin user@remote_server:/path/to/project.git
关键点说明:
- 使用裸仓库(–bare)作为中央仓库更规范
- SSH密钥认证比密码更安全方便
- 首次推送需要
-u参数建立追踪关系 - 确保Linux服务器已安装git:
sudo apt install git(Ubuntu)
建议: 使用SSH密钥并配置裸仓库作为同步中枢。
pycharm 的 deployment 功能不知大家有没有使用过?
最主要的问题是 git 版本控制,现在是使用终端 SSH 连接到远程 VM ,然后在终端上使用 VIM 编辑 python 项目文件太费力( VIM 使用不熟练),如果在本地 win 环境编辑文件上传到 VM ,会影响整个文件的 Git 版本管理。也许我还是在本地安装 linux 系统比较好。。。
难道不是建个分支?
在 windows 下用 git 注意两点: 1 ,是把权限变成 0755 ,其实问题不大, 2 ,是上传的时候注意回车换行的问题。(可以选)
另外就是自动缩进的问题。
都没有明白你的问题。
要修改远程的文件,用 filezilla 或者挂载为文件夹
要本地有一整套环境,同步运行测试,用 Rsync
正常开发,用代码版本控制。
主要原因是 win 和 Linux 的换行符不同, Win 是 CRLF, Linux 是 LF 。你在本地修改完文件,上传到 Linux 服务器,再用 dos2unix 转换一下就行了。
win 下直接用 git 不允许么? git 只要有 ssh 就可以用的嘛。
win 下用的编辑器设定下格式用 LF 就行。
现代化编辑器 (Atom,sublime,等)可以自动识别当前文件换行方式,可以设定为保持现有文件换行方式。
自动缩进…又是 tab 和 space 的圣战了…现代化编辑器,推荐用 soft tab 绑定为 4 space.
phpstorm 一直用 deployment 功能实时同步文件到测试机, jb 系的 ide 应该都可以。
Deployment / Configurations 增加一个 server , sftp 模式,用你的 ssh 上好连接到你的测试机,设好路径之类的
Deployment / Options 里面设置一下,大部分都可以勾上,我选的是 "Upload changed files automatically to the default server : Always"
然后在自己电脑的 phpstorm 上开发,测试机上测试就行了,文件都会自动同步上去。
git 用 phpstorm 内集成的
/ssh 上好 /ssh 账号 /
至于说测试机上 git 控制受影响,出问题你直接在测试机上丢弃那些文件的修改,重新 pull 一下好了
pycharm 里面设置 line separator, windows 的 git 也设置下,这样同步过去就没有问题了。
只不过还是推荐是用 vagrant 虚拟机,或者直接上 linux
如果你可以在 win 上跑 Linux 虚拟机的话,可以试试这个
https://github.com/xuboying/mysync
虚拟机里的 pycharm 性能也是很快的
realsync 炒鸡好用,直接通过 ssh 同步文件夹, 1 、指同步变化的文件夹; 2 、自动记忆 ssh 帐号密码; 3 、可设定排除项,.git 默认不同步; 4 、只同步变化的文件,通过类似 inotify 技术做监控; 5 、实效性很棒; 6 、 win /linux 多平台支持
我工作中就是 windows 上 pycharm Deployment 到 linux 测试机上,需要代码同步的时候 到测试机上 git reset --hard ,git clean --df , git pull xx/xx 这样就没有代码覆盖问题了
got it!!
PS :为啥要分开修改和提交代码呢,因为公司有防火墙,远程 Linux 只有命令行, win 上 make 等操作执行不了。
感谢,我先试试
感谢诸位。
git pull xx/xx 这一步是从哪儿 pull 的代码?
Pycharm 在 win 上如何默认设置为 unix 下的 LF ?


