首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用git和工作树

如何使用git和工作树
EN

Stack Overflow用户
提问于 2015-04-20 08:43:55
回答 1查看 471关注 0票数 0

我正在尝试使用git启动git命令,但是我遇到了问题,因为我有额外的参数需要包含在git命令中。即git-dir和工作树。git命令如下:

代码语言:javascript
复制
git --git-dir=../git_repos/dev --work-tree=../dev status

当我在命令行中运行与我的gulpfile.js相同的文件夹时,它正常工作,但我无法找到包含额外参数的正确方法。

我的基本测试吞咽任务如下所示:

代码语言:javascript
复制
var gulp = require('gulp');
var git = require('gulp-git');    

gulp.task('gitDevStatus', function(){
    git.status({ cwd: "--git-dir=../git_repos/dev --work-tree=../dev" }, function (err, stdout) {
        if (err) throw err;

        console.log(JSON.stringify(stdout));
        console.log("DONE");
    });
});

我遇到麻烦的是:

代码语言:javascript
复制
git.status({ cwd: "--git-dir=../git_repos/dev --work-tree=../dev" }, ...

如果我在没有任何参数的情况下运行它,我当然会失败,因为它找不到git文件:

代码语言:javascript
复制
git.status({ }, ... 
fatal: Not a git repository (or any of the parent directories): .git

如果我把额外的变量作为args,我得到:

代码语言:javascript
复制
git.status({ args: "--git-dir=../git_repos/dev --work-tree=../dev" },
fatal: Not a git repository (or any of the parent directories): .git

,这意味着本例中的args没有更改已执行的git命令。

最后,如果我将它们添加到cwd中:就像在我的整个任务示例中一样,我得到:

代码语言:javascript
复制
 git.status({ cwd: "--git-dir=../git_repos/dev --work-tree=../dev" }, ...
 Error: spawn ENOENT

我理解这个错误是因为它找不到文件或目录,但至少它不再抱怨没有.git。

我尝试过的其他事情包括用嵌套引号包装目录定义:

代码语言:javascript
复制
 git.status({ cwd: "--git-dir='../git_repos/dev' --work-tree='../dev'" }, ...

所有尝试都以相同的生成ENOENT错误而结束。

有人能为我指出正确的方向吗?我应该如何处理这种更复杂的git命令呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-20 18:37:49

休息之后,再看一看git文档,我尝试使用exec函数,并获得了一个成功的结果:

代码语言:javascript
复制
git.exec({args : '--git-dir=../git_repos/dev --work-tree=../dev status'}, function (err, stdout) {
    if (err) throw err;
    console.log(stdout);
});

我不确定这是否是最好的做法,所以如果任何人有更多的知识可供分享,我将感谢进一步的投入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29743031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档