环顾四周,但找不到一个示例。没有解释文档,我无法弄清楚。
如何修改文件(例如,README.md),为修改后的文件创建提交,然后将提交推送到服务器?
Nodegit:http ://www.nodegit.org/
Nodegit文档:http ://www.nodegit.org/nodegit
有一个示例,说明如何在其存储库上创建/添加和提交,可以帮助您修改文件。
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); })
希望这可以帮助。