【问题标题】:Running .sh file on Windows 10 command prompt using cygwin使用 cygwin 在 Windows 10 命令提示符下运行 .sh 文件
【发布时间】:2017-01-09 20:20:19
【问题描述】:

我正在尝试更改 GitHub 上推送的提交的作者姓名。我正在逐步按照此处的说明进行操作:https://help.github.com/articles/changing-author-info/#platform-windows 但我被困在第 3 步。我目前正在使用 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

所以我在命令提示符下复制并粘贴了上面的代码并按下回车键,但似乎有错误。我已经安装了 Cygwin,我想知道运行上述代码的最佳方式是什么。

【问题讨论】:

标签: github command-line


【解决方案1】:
  1. 在你的项目目录下用上面的代码创建一个名为shellpro.sh的文件
  2. 打开cygwin
  3. 使用 cd 命令浏览到项目目录
  4. 键入 bash shellpro.sh 以执行您的脚本

或者你可以简单地在项目文件夹中创建文件并双击它以使用 git-bash (CygWin in windows) 执行它

【讨论】:

  • 您好,谢谢您的回复,我按照您的指示进行操作,但出现此错误:Rewrite f66896628ba48d082c40d06c1ee8020df0d2ec9f (1/29) (0 seconds passed, remaining 0 predicted) C:\Program Files\Git\mingw64/libexec/git-core\git-filter-branch: eval: line 357: unexpected EOF while looking for matching "' C:\Program Files\Git\mingw64/libexec/git-core\git-filter -分支:评估:第 358 行:语法错误:文件意外结束`
【解决方案2】:

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

我执行了以下操作以获取一些有关 Git 如何在 filter-branch 中查看其环境的信息:

git filter-branch --env-filter "printenv; echo" -- HEAD~..HEAD

这显示了各种方便的路径,例如OLDPWD。但我认为将脚本放在PATH 中的某个位置是最安全的。

假设%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

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

【讨论】:

    猜你喜欢
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 2012-07-07
    • 2018-12-21
    • 1970-01-01
    • 2013-06-17
    相关资源
    最近更新 更多