为什么隐藏所有命令在命令行Windows中不起作用:git --git-dir = c / a.git --work-tree = c / b status -a?

问题描述

我正在尝试在git命令下引用此文档https://git-scm.com/docs/git。 如果我在下面的git命令中使用stash而不是stash -a,它会很好地工作,否则它会显示下面提到的错误消息。谁能帮我替代方案,使其能够按我的需要工作?

我的要求是存储所有文件包括未跟踪的文件(如果有的话),然后再进行git pull,我有多个项目,要对其自动化,因为对于每个项目重复git stash -agit pull origin master-ci令人头疼,我想以某种方式在git-pull-latest.bat脚本中自动化它。

Git命令已尝试:

set MY_REPO=C:\Users\ravibeli\Documents\Projects\GitRepo
set MY_GIT_OPERATION=pull origin master-ci

git --git-dir=%MY_REPO%\demo-service\.git --work-tree=%MY_REPO% stash -a && git --git-dir=%MY_REPO%\demo-service\.git --work-tree=%MY_REPO% %MY_GIT_OPERATION%

错误消息:

Ignoring path demo-service/
Saved working directory and index state WIP on poc-branch: 9f625aa18 Merge pull request #1004 in demo-service from ~ravibeli/demo-service:display-message to poc-branch

解决方法

您可以activate autostash:而不是尝试显式地自动执行隐藏操作:

git config --global pull.rebase true
git config --global rebase.autoStash true

但是,如果您不想基于每次拉取而希望使用常规fetch完成的经典merge + git pull,则可以使用Git 2.27进行设置:>

git config --global merge.autostash true

在这两种情况下,git pull都会首先从当前工作树中隐藏正在进行的任何工作。