- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Node-git 我只想:
cd repo
git add file.js
git commit -m "Added file.js"
.then(function() {
return repo.refreshIndex();
})
.then(function(indexResult) {
index = indexResult;
})
.then(function() {
// this file is in the root of the directory and doesn't need a full path
return index.addByPath(fileName);
})
.then(function() {
// this file is in a subdirectory and can use a relative path
return index.addByPath(path.join(directoryName, fileName));
})
.then(function() {
// this will write both files to the index
return index.write();
})
.then(function() {
return index.writeTree();
})
.then(function(oidResult) {
oid = oidResult;
return nodegit.Reference.nameToId(repo, "HEAD");
})
.then(function(head) {
return repo.getCommit(head);
})
.then(function(parent) {
var author = nodegit.Signature.create("Scott Chacon",
"schacon@gmail.com", 123456789, 60);
var committer = nodegit.Signature.create("Scott A Chacon",
"scott@github.com", 987654321, 90);
return repo.createCommit("HEAD", author, committer, "message", oid, [parent]);
})
.done(function(commitId) {
console.log("New Commit: ", commitId);
});
最佳答案
这是我第一次使用这个库,但我想我还是会回答。如果您换出 await
的 promise ,那么遵循流程会容易得多。 .我评论了我对正在发生的事情的基本了解。
const repo = await git.Repository.open(localNotesDir);
const index = await repo.refreshIndex(); // read latest
const files = await repo.getStatus(); // get status of all files
files.forEach(file => index.addByPath(file.path())); // stage each file
await index.write(); // flush changes to index
const changes = await index.writeTree(); // get reference to a set of changes
const head = await git.Reference.nameToId(repo, "HEAD"); // get reference to the current state
const parent = await repo.getCommit(head); // get the commit for current state
const author = git.Signature.now("Scott Chacon", "schacon@gmail.com"); // build auth/committer
const committer = git.Signature.now("Scott A Chacon", "scott@github.com");
// combine all info into commit and return hash
const commitId = await repo.createCommit("HEAD", author, committer, "message", changes, [parent]);
console.log('commitId', commitId);
// changes and head are each oids. Read about them here:
// https://hackage.haskell.org/package/gitlib-0.6.5/docs/Data-Git-Oid.html
关于git - Nodegit - 如何暂存和提交文件? (简单的例子!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47620249/
open(o.localPath).then(function (repo) { repository = repo; return repo.fetchAll(cre
我正在尝试使用 Nodegit插件到 clone将一些 git 存储库放入名为“tmp”的目录中,这样我就可以使用实际文件夹执行操作(将其上传到服务器)。这是我的代码: var git = requi
我的仓库中有两个分支 master 和 master.min。 假设我当前的分支是master.min。 我的主分支正在提交 - abcd 一些推送发生在 master 分支 - efgh, ijkl
伙计们,我有一个名为 user/foo 的分支,我想从远程检查它。代码: Git.prototype.refresh = function refresh(branch) { var opti
四处寻找示例,但找不到。文档没有解释,我想不通。 如何修改文件(例如 README.md),为修改后的文件创建一个提交,然后将提交推送到服务器? Nodegit:http://www.nodegit.
NodeGit 提供了一种简单的方法来获取所有当前更改的差异,而无需分阶段更改: import NodeGit, { Diff } from 'nodegit'; function getUnstag
使用 Node-git 我只想: 打开一个仓库(文件已被写入/更新) 暂存文件 提交 使用 git cli 我会写这样的东西 cd repo git add file.js git commit
我正在使用 Electron ,我的主要流程中有以下内容 import * as Git from "nodegit"; console.log("NodeGit version is:", Git.
我正在编写一个 Node API 服务器,它需要向用户发送驻留在服务器上的 git 存储库中的本地分支列表。很多地方建议使用Repository#getReferenceNames来自 NodeGit
在通过执行以下操作将 HEAD 设置为分离状态后,我正在尝试通过 nodegit 执行 git reset --hard: var oid = 'commit sha'; repo.setHeadDe
尝试使用 NodeGit 访问 HEAD 引用。我是 Nodejs 新手,所以这可能只是因为我错过了一些东西。以下代码查找头部,但始终返回 {}。不确定我做错了什么。 代码通过调用 getHead(r
我正在尝试使用 npm 包 nodegit 复制 git log --stat 的输出。文档( http://www.nodegit.org/api/commit/ )在 Commit 模型上显示了许
在下面的例子中很多人声称已经解决了这个问题 https://github.com/nodegit/nodegit/issues/463 Nodegit: How to modify a file an
我正在编写一个小应用程序来分析文件夹中的 git 存储库。我正在使用 nodegit 来解析基于 libgit2 的 repo。 如何使用 nodegit 获取 repo 中所有分支的所有提交? 这是
我有一个 NodeGit 存储库对象,repo , 和一个字符串 sha代表提交 ID 的代码,commit_id .我如何使用 NodeGit 执行此提交的 git checkout,这与命令 gi
我已经能够使用以下代码将文件写入裸存储库中的分支,但它仅适用于根目录中的文件。我无法在文档中找到关于如何为子文件夹构建树并将其用作提交的好示例。 async function writeFile(fi
我正在尝试实现nodegit来使用gitlab进行repo控制,但是我需要使用基本的用户名密码身份验证,并且文档仅使用ssh。我尝试使用 Cred.userpassPlaintextNew 但我得到
我在使用 nodegit 时遇到问题(v0.9.0)。任何需要包的 .js 脚本都将永远挂起并且不会退出。示例: var nodegit = require('nodegit'); console.l
我有这个: nodegit.Reference .lookup(repo, `refs/tags/${tagName}`) .then(ref => nodegit.Commit.lookup
我正在尝试使用 nodegit使用以下代码打开一个 git 存储库: var git = require('nodegit'); git.Repo(repoPath, function(error,
我是一名优秀的程序员,十分优秀!