gpt4 book ai didi

node.js - 如何使用标准终端命令从 Node 执行 git 命令

转载 作者:太空宇宙 更新时间:2023-11-03 21:53:34 24 4
gpt4 key购买 nike

我正在尝试使用 Node 脚本以编程方式将分支 merge 到主分支中。我尝试的第一件事是来自 Execute a command line binary with Node.js ,它对于执行终端命令效果很好。但我在更改工作目录时遇到了困难。我想将工作目录更改为 git 存储库,然后从那里运行 git 命令。执行cd ~/repocd /home/me/repo根本没有更改工作目录,除了使用 cd 之外我找不到任何方法来更改它。 .

然后我尝试从脚本目录执行 git 命令,但指向我的存储库。我试过git --git-dirgit --work-tree但这些命令都不起作用。错误是相同的:fatal: Not a git repository (or any of the parent directories): .git我猜这是因为运行脚本的目录不是 git 存储库。

因此,我要么想将 git 命令发送到运行脚本的目录以外的目录,要么想要一种方法来更改脚本的工作目录。最好是后者。我的完整代码和输出如下:

import JiraData from './jiradata';
const jiraData = new JiraData();
const { exec } = require('child_process');

(async function () {
const cards = await jiraData.getCardsInTest();
let commands = ['cd /home/me/repo', 'pwd'];
let proceeding = true;
// for (const card of cards) {
// commands.push(`git merge origin/${card} --commit --no-edit`);
// }

for (const command of commands) {
if (proceeding) {
console.log(`Executing command "${command}"`);
exec(command, (err, stdout, stderr) => {
if (err) {
proceeding = false;
console.log(stderr);
return;
}
console.log(stdout);
})
}
}
})();

输出:

> ci@1.0.0 start /home/me/CI
> babel-node index.js --presets es2015,stage-2

Executing command "cd /home/me/repo"
Executing command "pwd"
/home/me/CI

最佳答案

尝试使用:

git -C /path/to/git/repo your_git_command

这将在 git 存储库的上下文中执行 git 命令 /path/to/git/repo

关于node.js - 如何使用标准终端命令从 Node 执行 git 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46781763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com