当前位置: 首页 > news >正文

用git指令别名,解决unity环境问题

文章目录

      • 背景
      • 问题解决
        • 尝试1
        • 尝试2
        • 尝试3

背景

unity 项目开发时,由于我本机的配置和项目组其他小伙伴的配置不一样,使用统一的配置打开项目会出现花屏的现象,经过摸索尝试,需要修改 unity 的Project Settings。修改之后,项目文件会有变更,若是提交,其他小伙伴 pull 之后会导致他们的工程不可用。所以我只能本地修改这个文件,且不能将该文件的变更提交到项目当中。
在这里插入图片描述

问题解决

尝试1
git update-index --assume-unchanged ProjectSettings/ProjectSettings.asset

本地设置忽略 ProjectSettings 文件没有发生变更,这样 pull ,push 代码都没有问题,但是切换分支就会产生冲突。每次切换分支就需要解决冲突,还是很麻烦。

尝试2

在这里插入图片描述
git 指令支持 hook,我只需要每次切换分支前将 ProjectSettings 还原,切换分支后再修改 ProjectSettings 文件,并重新设置本地忽略 ProjectSettings 文件的变更,就可以实现我想要的功能。
但实际测试下来,发现 git 并不支持 pre-checkout,只支持 post-checkout。所以这种方式也不太行。

尝试3

既然前两种方式都不行,那就只能自己写脚本来实现了,git 命令支持别名,可以将别名指向自己写的脚本。
设置checkoutscript别名

git config --global alias.checkoutscript '!sh D:\Applications\script\checkoutscript.sh'

checkoutscript脚本,假设我们的项目为 abc

#!/bin/bash
echo "run checkout script"# 检查参数数量
if [ $# -eq 0 ]; thenecho "no params"exit 1
fi# 检查第一个参数
first_arg="$1"
# 如果第一个参数是 '.' 或 '-b'
if [ "$first_arg" == "." ] || [ "$first_arg" == "-b" ]; then# 将所有参数传递给 git checkoutgit checkout "$@"exit 0
fi# 检查remote url
remote_url=$(git remote get-url origin) 
echo "$remote_url"
if [ -z "$remote_url" ]; then  # 如果 URL 为空git checkout "$@"exit 0
fi# 如果不是abc项目,执行checkout
if ! [[ "$remote_url" = *"abc"* ]]; then  # echo "remote URL does not contain 'abc', performing checkout with provided branch name."git checkout "$@"exit 0
fibranchName=$1
if [ -z "$branchName" ]; thenecho "branchName is empty"
elseecho "branchName is not empty: $branchName"echo "Current directory is: $(pwd)"echo "pre checkout"git update-index --no-assume-unchanged ProjectSettings/ProjectSettings.assetgit checkout ProjectSettings/ProjectSettings.assetgit checkout $branchName# 变更配置文件,并本地忽略配置文件的变更sed -i 's/m_APIs: 0b00000002000000/m_APIs: 020000000b000000/g' ProjectSettings/ProjectSettings.assetsed -i 's/selectedPlatform: 2/selectedPlatform: 4/g' ProjectSettings/ProjectSettings.assetgit update-index --assume-unchanged ProjectSettings/ProjectSettings.assetecho "end after checkout"
fi

这样,我每次需要切换分支的时候直接执行 git checkoutscript xxx 就可以了,也不影响 pull 和 push操作。


http://www.mrgr.cn/news/8923.html

相关文章:

  • flume--数据从kafka到hdfs发生错误
  • OpenCV resize 的各插值方式的区别与用途
  • FPGA开发——在线调试工具Signal Tap的使用
  • MySQL——多表操作(二)操作关联表(2)添加数据
  • leetcode刷题—二分查找
  • C语⾔内存函数
  • uniapp在线视频监控开发
  • 指针(二)
  • MongoDB 单机和集群环境部署教程
  • 【Kaggle】练习赛《有毒蘑菇的二分类预测》(下)
  • CSS笔记
  • 【工控】线扫相机小结
  • SQLite 插入数据并返回自增ID
  • 《操作系统---PV操作》(同步与互斥)
  • 计算机操作员试题(公共科目)
  • HeidiSQL中一些简单mysql语句的含义(一)
  • 如何评估Redis的性能
  • 面向对象编程:深入PHP的封装、继承和多态性!
  • tomcat实战演练
  • 《机器学习》—— OpenCV 对图片的各种操作