一, 需求
代码在 Windows 机器本地编辑好了, 需要在服务器测试环境同步验证.
1.1 sambas 共享
假设服务机器开通 sambas 服务端口, 并且 Windows 防火墙允许访问. 这时候可以在 Windows 打开网盘一样, 打开 sambas 共享的服务器文件夹, 把代码工程放置于共享网盘, 用 IDE 打开网盘文件夹的代码工程.
1.2 scp 共享
因为 Windows 机器一般处于办公网, 为了内网安全, 服务器和办公网一般隔离开, 不是同一网段, 需要办公时候使用跳板机连接两个网络. 连接的认证或需要密码或者需要私钥. 需要用到本地编辑大概是因为 Windows 有一些强大的 IDE.vs code 或者 jetbrain 系列.
1.3 VIM 直接服务器编辑
这个就是比较直接, 在服务器编辑代码, 但是有些服务器多个开发用户共用一台虚拟机, 大家使用容器隔离, 有些时候, 企业限定不允许安装一些个人插件, 或者安装环境配置不能保证下次不被清除. Linux 流行的开发环境有:
1.4 SVN 或者 Git 同步
当然 Git 更流行, 我们以 Git 为例. Git 还分为有没有创建分支的权限.
1.4.1 有个人分支的权限
创建一个个人分支
Git branch < 你的分支名字 > <commit Id > 或者 Git branch < 你的分支名字 > < 已经存在的分支 >
基于当前所在的分支末梢并创建分支和 checkout
Git branch < 你的分支名字 > + Git checkout < 你的分支名字 > . 这两个命令也可以等价于 Git checkout -b < 你的分支名字 >
在你的分支修改改代码, 完成之后再 merge 到 master 分支
1.4.2 无个人分支的权限
有种代码管理任务, 提交到服务端的代码是必须被 review 过的干净的代码. 所以有时候远程仓库设置不能创建个人分支. 这个时候可以使用 master 的暂存区. 比如 gerrit 会
Gerrit 提供了一个特有的命名空间 "refs/for/" 用来定义我们的提交上传到哪个 branch, 且可以用来区分我们的 commit 是提交到 Gerrit 进行审核还是直接提交到 Git 仓库.
Git push origin HEAD:refs/for/master
二, Git 的版本同步方式
2.1 比较好的方法
比如说国外开发团队比较好的开发流程啥, 先提 issue. 这个 issue 会 new 一个同名的 branch. 这个 branch 添加你开发的代码, 然后 在临时分支 - 提交代码 - 合并到 master
2.2 中途需要多次提交
2.2.1 Windows 机器提交更改
比如安装了 tortoise Git, 在目录有 Git bash 功能. 开启一个 bash 终端
Git diff --name-only 查看被修改的文件名
Git add xxx 在增加要提交的文件, 无论之前是否 add, 只要是再次修改, 提交都需要 add
Git diff --staged 确认下是否加进来需要的 commit 了
- Git commit --amend
- Git push -f
五个步骤也可以合并成两个步骤:
- Git diff --name-only | xargs -L1 Git add
- Git commit --amend && Git push -f
2.2.2 Linux 开发环境下载更改
Git fetch
Git reset --hard origin/< 你的分支名字 >
来源: https://www.qcloud.com/developer/article/1521155