gpt4 book ai didi

javascript - Nodegit:如何修改文件并推送更改?

转载 作者:IT老高 更新时间:2023-10-28 23:07:55 27 4
gpt4 key购买 nike

四处寻找示例,但找不到。文档没有解释,我想不通。

如何修改文件(例如 README.md),为修改后的文件创建一个提交,然后将提交推送到服务器?

Nodegit:http://www.nodegit.org/

Nodegit 文档:http://www.nodegit.org/nodegit

最佳答案

有一个如何在他们的 repo 上创建/添加和提交的示例,可以帮助您修改文件。

https://github.com/nodegit/nodegit/blob/master/examples/add-and-commit.js

关于提交和推送,这是我的代码的外观片段,希望对您有所帮助。我花了很多时间才弄清楚这一点,感谢 Gitter 上的人,我终于找到答案了。

代码如下:

var path = require('path');

var nodegit = require('nodegit'),
repoFolder = path.resolve(__dirname, 'repos/test/.git'),
fileToStage = 'README.md';

var repo, index, oid, remote;

nodegit.Repository.open(repoFolder)
.then(function(repoResult) {
repo = repoResult;
return repoResult.openIndex();
})
.then(function(indexResult) {
index = indexResult;

// this file is in the root of the directory and doesn't need a full path
index.addByPath(fileToStage);

// this will write files to the index
index.write();

return index.writeTree();
})
.then(function(oidResult) {
oid = oidResult;

return nodegit.Reference.nameToId(repo, 'HEAD');
})
.then(function(head) {
return repo.getCommit(head);
})
.then(function(parent) {
author = nodegit.Signature.now('Author Name', 'author@email.com');
committer = nodegit.Signature.now('Commiter Name', 'commiter@email.com');

return repo.createCommit('HEAD', author, committer, 'Added the Readme file for theme builder', oid, [parent]);
})
.then(function(commitId) {
return console.log('New Commit: ', commitId);
})

/// PUSH
.then(function() {
return repo.getRemote('origin');
})
.then(function(remoteResult) {
console.log('remote Loaded');
remote = remoteResult;
remote.setCallbacks({
credentials: function(url, userName) {
return nodegit.Cred.sshKeyFromAgent(userName);
}
});
console.log('remote Configured');

return remote.connect(nodegit.Enums.DIRECTION.PUSH);
})
.then(function() {
console.log('remote Connected?', remote.connected())

return remote.push(
['refs/heads/master:refs/heads/master'],
null,
repo.defaultSignature(),
'Push to master'
)
})
.then(function() {
console.log('remote Pushed!')
})
.catch(function(reason) {
console.log(reason);
})

希望这会有所帮助。

关于javascript - Nodegit:如何修改文件并推送更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23870374/

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