签出新分支后,我想通过Atlassian SourceTree(版本1.4.0.0)停止跟踪.classpath等文件。我创建了一个自定义操作,其详细信息如下:
然后,从“工作副本更改”面板中,我选择了一个文件,右键单击它并尝试执行“假定未更改”自定义命令。但是,我得到了这个完全“吝啬”的错误消息:
我在上面的错误消息中复制了完整命令,并尝试从命令行执行它:
有趣的是,它奏效了。
有人可以通过右键单击并从菜单中选择,告诉我为什么这个自定义操作无法在第一个位置工作?
这是有趣的。我刚刚在自己的设置中发现了这个问题,而之前正在运行的基于git的命令现在不再起作用了。我假设在最近的SourceTree版本中发生了一些变化。我相信现在调用的问题是命令不会像在SourceTree中打开终端时所预期的那样配置完整的环境设置。 Completed with errors
消息是未找到命令的结果。
对于我自己的设置,我通过使用cmd
进程构建自定义操作来解决此问题。例如:
带参数:
/c %LOCALAPPDATA%\Atlassian\SourceTree\git_local\bin\sh.exe --login -i -c 'git format-patch --full-index -1 $SHA'
另一个例子:
带参数:
/c %LOCALAPPDATA%\Atlassian\SourceTree\git_local\bin\sh.exe --login -i -c ^"git diff --full-index --cached > patch.diff^"
(这些示例假设您在SourceTree中使用嵌入式Git)
使用SourceTree 1.6.12和Git 1.8.3。
检查$FILE
是否代表您选择的文件的完整路径。
它似乎以“Custom actions – more power to you”的方式呈现(2012年2月,自定义动作被引入Atlassian Source Tree 1.3+)。
如果是这种情况,使用$FILE
而不是C:/Repository/$FILE
就足够了。
我最近在Windows中使用SourceTree自定义操作获得了一些自定义操作:
要运行的脚本:cmd
参数:/c %LOCALAPPDATA%\Atlassian\SourceTree\git_local\bin\sh.exe -c -e 'alias git=/c/Users/%username%/AppData/Local/Atlassian/SourceTree/git_local/cmd/git.exe; git stash; git pull --rebase; git stash pop'
如果您安装了多个版本的git,则会处理此问题,如果它在中途失败,则会提前退出。
MacOS中的粗略等价物如下:
要运行的脚本:/path/to/stash_unstash.sh
参数:$REPO
说他是_u你说他是.是
#!/usr/bin/env bash
cd $1
git stash && git pull --rebase && git stash pop