当前位置:  开发笔记 > 编程语言 > 正文

获取Node中最新git提交的哈希值

如何解决《获取Node中最新git提交的哈希值》经验,为你挑选了3个好方法。

我想在NodeJS中获取当前分支上最近提交的id/hash.

在NodeJS中,我想获得最新的id/hash,关于git和commits.



1> antoine129..:

简短的解决方案,无需外部模块(同步替代Edin的答案):

revision = require('child_process')
  .execSync('git rev-parse HEAD')
  .toString().trim()

如果你想手动指定git项目的根目录,使用第二个参数execSync来传递cwd 选项,比如execSync('git rev-parse HEAD', {cwd: __dirname})


@DanielSteigerwald或`git rev-parse --short HEAD`
使用`.slice(0,7);`得到短沙.

2> edin-m..:

解决方案#1(需要git,带回调):

require('child_process').exec('git rev-parse HEAD', function(err, stdout) {
    console.log('Last commit hash on this branch is:', stdout);
});

(可选)您可以使用execSync()以避免回调.

解决方案#2(无需git):

获取文件的内容 .git/HEAD

如果git repo处于分离头状态,则内容将是哈希

如果git repo在某个分支上,则内容将类似于:"refs:refs/heads/current-branch-name"

得到的内容 .git/refs/heads/current-branch-name

处理此过程中的所有可能错误

要直接从主分支获取最新的哈希值,您可以获取该文件的内容: .git/refs/heads/master

这可以用以下代码编码:

const rev = fs.readFileSync('.git/HEAD').toString();
if (rev.indexOf(':') === -1) {
    return rev;
} else {
    return fs.readFileSync('.git/' + rev.substring(5)).toString();
}



3> Paul..:

使用nodegit,path_to_repo定义为包含要获取提交sha的repo路径的字符串.如果要使用运行该进程的目录,请替换path_to_repoprocess.cwd():

var Git = require( 'nodegit' );

Git.Repository.open( path_to_repo ).then( function( repository ) {
  return repository.getHeadCommit( );
} ).then( function ( commit ) {
  return commit.sha();
} ).then( function ( hash ) {
  // use `hash` here
} );

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有