Github 使用cygwin在Windows 10命令提示符下运行.sh文件

Github 使用cygwin在Windows 10命令提示符下运行.sh文件,github,command-line,Github,Command Line,我正在尝试更改GitHub上推送提交的作者名称。我正在一步一步地按照这里的说明进行操作:但我仍停留在第三步。我目前正在Windows上使用命令提示符来执行此操作 #!/bin/sh git filter-branch --env-filter $' OLD_EMAIL=“yongjeffrey@hotmail.com" CORRECT_NAME=“Jeffrey Yong" CORRECT_EMAIL=“jeffreyyong10@gmail.com" if [ "$GIT_COMMITTER

我正在尝试更改GitHub上推送提交的作者名称。我正在一步一步地按照这里的说明进行操作:但我仍停留在第三步。我目前正在Windows上使用命令提示符来执行此操作

#!/bin/sh

git filter-branch --env-filter $' OLD_EMAIL=“yongjeffrey@hotmail.com" CORRECT_NAME=“Jeffrey Yong" CORRECT_EMAIL=“jeffreyyong10@gmail.com" if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]

then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] then

  export GIT_AUTHOR_NAME="$CORRECT_NAME"  export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL" fi ' --tag-name-filter cat -- --branches --tags
因此,我在命令提示符下复制并粘贴了上面的代码,然后按enter键,但似乎出现了错误。我已经安装了Cygwin,我想知道运行上述代码的最佳方式是什么

  • 在项目目录中使用上述代码创建一个名为shellpro.sh的文件
  • 开放式cygwin
  • 使用cd命令浏览到项目目录
  • 键入
    bash shellpro.sh
    以执行脚本

  • 或者,您可以简单地在项目文件夹中创建文件,然后双击它以使用git bash(windows中的CygWin)执行它。

    我意识到这有点古老,但我遇到了这个问题。Windows 10上的Git for Windows的bash环境是一个定制的Cygwin环境(看起来)

    我做了以下工作,以获得有关Git在筛选器分支中如何看待其环境的一些信息:

    git filter-branch --env-filter "printenv; echo" -- HEAD~..HEAD
    
    这显示了各种方便的路径,如
    OLDPWD
    。但我认为将脚本放在
    路径的某个地方是最安全的

    假设
    %USERPROFILE%\bin
    在您的路径中,您将脚本放入
    %USERPROFILE%\bin\filterscript.sh

    #!/bin/bash
    
    OLD_EMAIL="yongjeffrey@hotmail.com"
    CORRECT_NAME="Jeffrey Yong"
    CORRECT_EMAIL="jeffreyyong10@gmail.com"
    
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_COMMITTER_NAME="$CORRECT_NAME"
        export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    
    if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] then
      export GIT_AUTHOR_NAME="$CORRECT_NAME"
      export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
    
    然后,您可以这样调用它:

    git filter-branch --env-filter "source filterscript.sh" --tag-name-filter cat -- --branches --tags
    

    注意
    源代码的使用。脚本需要源代码,否则环境更改将丢失,执行脚本的子shell将终止。寻源使稍后将执行提交的
    sh
    实例获得环境更改。如果省略了源代码,则会特别痛苦,因为调试时,脚本似乎确实在执行(而且确实在执行),但不在正确的shell中。

    您好,谢谢您的回复,我按照您的说明进行了操作,但我收到了以下错误:
    重写f66896628ba48d082c40d06c1ee8020df0d2ec9f(1/29)(0秒过去,剩余0秒)C:\Program Files\Git\mingw64/libexec/Git core\Git筛选器分支:eval:line 357:查找匹配项时出现意外EOF
    “'C:\Program Files\Git\mingw64/libexec/Git core\Git筛选器分支:eval:line 358:语法错误:文件意外结尾`这是否回答了您的问题?