当前位置:   article > 正文

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

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

背景

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

问题解决

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

本地设置忽略 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'
  • 1

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

#!/bin/bash
echo "run checkout script"

# 检查参数数量
if [ $# -eq 0 ]; then
    echo "no params"
    exit 1
fi

# 检查第一个参数
first_arg="$1"
# 如果第一个参数是 '.' 或 '-b'
if [ "$first_arg" == "." ] || [ "$first_arg" == "-b" ]; then
    # 将所有参数传递给 git checkout
    git 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
fi

branchName=$1
if [ -z "$branchName" ]; then
    echo "branchName is empty"
else
    echo "branchName is not empty: $branchName"
    echo "Current directory is: $(pwd)"
    echo "pre checkout"
    git update-index --no-assume-unchanged ProjectSettings/ProjectSettings.asset
    git checkout ProjectSettings/ProjectSettings.asset
    git checkout $branchName
    # 变更配置文件,并本地忽略配置文件的变更
    sed -i 's/m_APIs: 0b00000002000000/m_APIs: 020000000b000000/g' ProjectSettings/ProjectSettings.asset
    sed -i 's/selectedPlatform: 2/selectedPlatform: 4/g' ProjectSettings/ProjectSettings.asset
    git update-index --assume-unchanged ProjectSettings/ProjectSettings.asset
    echo "end after checkout"
fi

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

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

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号