Skip to content

Latest commit

 

History

History
105 lines (80 loc) · 4.16 KB

中心化多机器开发推荐配置.md

File metadata and controls

105 lines (80 loc) · 4.16 KB

中心化多机器开发推荐配置-git篇

使用场景

对于可能使用多机写代码且想备份+多执行机器且可能会在代码路径下存模型、手动单独修改某台机器的某些开关类再次执行, 破坏同步一致性的同学,推荐使用此篇配置: 1)对于个人开发来说: master为代码分支, 远程机器拉取master更新再切换到其他开发分支, 修改/存模型后如果要再次从远程机器本地的master更新, 先将本分支修改存入git(不需push) 再将master更新修改、再合并入开发分支. 2)对于团队开发而言: master为总分支, 每个人自己再起一个自己的代码分支, 其他类似

合并策略

  • https://blog.walterlv.com/post/git-merge-strategy.html
    • -s theirs 目前已不支持(无视本地修改直接采用对方)
    • -X theris 指智能合并中冲突地方选择对方
  • 采用-X theirs策略自动处理冲突(一般为双方均修改行冲突) 使其恢复为master开发机代码端的状态
  • 而对于远程机器手动修改且开发机master分支没有再次修改的部分 merge时不会自动退回原版, 如果需要重置为master分支的版本, 建议删除相应文件后重新merge, 不建议盲目使用回退恢复, 防止一些编译文件、产出文件丢失

配置方法

使用密钥即可 参考本文件夹下git管理及同步.md

创建ssh-key 此外多台机器可以创建后用同一台的密钥和公钥替换, 在gitee或者github只需要绑定一个密钥即可

使用方法

  1. 首先在机器上正常配置好git -master分支
  2. master分支更到最新
  3. 创建一个本地分支--可以不上传 但是每次修改需要add和commit提交 不需要push(可能有模型文件等大文件不方便网络传输) git checkout -b "newdev"
  4. 在newdev分支下修改 需要更新代码时: git checkout new dev git add -A git commit -m "mychange" #不需要push上传 git checkout master git pull origin master git checkout newdev git merge -X theirs master #并入

注: git branch可查看当前所在分支 git log --oneline --graph #查看git历史和版本号

同步图例

个人电脑1(windows) [up.bat]<-\                  / -> machine 1 [syn.sh]
                             \               /  -> machine 2 [syn.sh]
                              -> [*](gitee)--  -> machine 3 [syn.sh]
                             /               \  -> machine 4 [syn.sh]
个人电脑2(linux/mac)[up.sh]<-/                  \ -> machine 5 [syn.sh]
# up.sh / up.bat #开发机同步脚本
git pull origin master
git add -A
git commit -m "up"
git push origin master

# syn.sh #执行机同步脚本
git add -A && git commit -m "up"
git checkout master && git pull && git checkout dev && git merge -X theirs master

分支配置

  1. 对于master分支,直接git clone仓库&保持完全同步即可
  2. 对于执行机的dev分支有些特殊,一方面尽可能同步,另一方面与master可以拉取,还要能够保留一些自己环境下的编译产出文件不同步,配置过程:
    • 如果第一个配dev分支时,可以直接从master分支下git checkout -b dev创建
    • 对于其他机器配dev分支,如果push需要注意.gitignore文件的内容是否被修改。dev分支仅存放部分脚本&上传csv数据结果,fetch后再merge本地最新的master,配置好.gitignore之后 后续无论是merge master还是pull origin dev都不会修改编译产出文件等dev分支的非同步内容
      git fetch origin dev:dev
      git merge master #注意如果master有新修改的.gitignore dev分支下需要再次修改回想要的
      git add -A && git commit -m "up"
      git push origin dev #可选
      

gitigore规则

配置.gitignore文件 实现对模型大文件产出等文件脱离git管理

# .gitignore

*.tar
*.pth.tar

或可以反向选择,建议dev分支采用只放行csv及脚本的策略,作为数据结果记录备份上传,配置参考如下

*
!*/
!.gitignore
!*.csv
!*.xls
!*.xlsx
!*.sh
!*.md
!*.py

如果修改gitignore前已经在commit到dev分支中, 可以采用git rm -rf --cached *.tar删除, 再commit