NodeGitが上演変更することなく、現在のすべての変更点の差分を取得する簡単な方法を提供していますファイルを上演し得るnodegit?は、すべてのdiffが
13
A
答えて
4
オーケーにDiff.OPTION.INCLUDE_UNTRACKED
の交換についての世話をする、私は方法を見つけた - 最初にコミットする前に、それは動作しませんがなされた。
import NodeGit, { Diff } from 'nodegit';
function getStagedChanges(path) {
const repo = await NodeGit.Repository.open(path);
const head = await repository.getHeadCommit();
if (!head) {
return [];
}
const diff = await Diff.treeToIndex(repo, await head.getTree(), null);
const patches = await diff.patches();
console.log(patches.map((patch) => patch.newFile().path()));
}
getStagedChanges();
1
indexToWorkdir
はちょうどgit diff
のように機能し、段階的な変更のみを表示するので、段階的な変更が表示されないのは奇妙です。私は、私のために働く例を書いた。それは、diffでステージングされたファイルとステージングされていないファイルの両方を表示します。試してみてください。スキップオプションを指定すると、ステージファイルのみが表示されます。
はまたDiff.OPTION.SHOW_UNTRACKED_CONTENT
import path from 'path';
import Git from 'nodegit';
async function print() {
const repo = await Git.Repository.open(path.resolve(__dirname, '.git'));
const diff = await Git.Diff.indexToWorkdir(repo, null, {
flags: Git.Diff.OPTION.SHOW_UNTRACKED_CONTENT | Git.Diff.OPTION.RECURSE_UNTRACKED_DIRS
});
// you can't simple log diff here, it logs as empty object
// console.log(diff); // -> {}
diff.patches().then((patches) => {
patches.forEach((patch) => {
patch.hunks().then((hunks) => {
hunks.forEach((hunk) => {
hunk.lines().then((lines) => {
console.log("diff", patch.oldFile().path(), patch.newFile().path());
console.log(hunk.header().trim());
lines.forEach((line) => {
console.log(String.fromCharCode(line.origin()) + line.content().trim());
});
});
});
});
});
});
return diff;
}
print().catch(err => console.error(err));
関連する問題
- 1. git diffはディレクトリ下のすべてを無視します。(node_modules)
- 2. intelijでgit diffのすべてのファイルを取得
- 3. すべての変更されたファイルを含むSvn diffパッチ
- 4. diff diffのコメントを
- 5. "git diff"の "diff - git"出力は何を指していますか?
- 6. howtoはsvn diffのようにdiffを見せますか?
- 7. diffをgit-diffのようにするには?
- 8. gitのdiffは、私が削除され、
- 9. diffに特定の文字列が含まれているすべてのコミットを表示します。
- 10. git diff -word-diffとonelineファイル
- 11. Gitのdiffがある
- 12. pandas.applyは()<code>spectrum['diff']</code>すべて<code>nan</code>が含まれ、二つの列
- 13. Gitリポジトリ:私は `Gitのdiff`
- 14. プルリクエストのSonarQubeプレビューモードでdiffの代わりにすべての問題が表示される
- 15. git diffを作成するにはgithubのプルリクエストのdiffと同じ結果が表示されますか?
- 16. パイプがsedをdiffした
- 17. パンダシリーズのnumpy diff
- 18. diffフラグメントのナビゲーションドロット
- 19. Docker's aufs diffフォルダのサイズが大きくなっています
- 20. Merge diffでIntelliJのコードが壊れています
- 21. git diffの相違点を示すgit diff
- 22. tf diff:コマンドラインでdiffがファイルの有効なバージョンを認識しないのはなぜですか?
- 23. @Injectable()と@Injectのdiffは何ですか?
- 24. Diffの結果をナビゲートするには
- 25. Windows 7で保存したとき、git diffはすべての行を^ Mで表示します
- 26. Kubernetesにはdocker diffのアナログがありますか?
- 27. 同じテキストだが0以外のdiff
- 28. ノンライン指向のdiff
- 29. MySQLのDATETIME DIFFクエリ
- 30. トータスSVNのDiffカラーコード
indexToWorkdirは反対WORKDIRと一致します(ステージングされた)現在のインデックスには、ステージングされていないファイルのみが表示されます。 – jantimon
リポジトリにコミットせずに試してみました。 –
上部(ステージングされたファイル)を再現しようとしています: http://blog.sourcetreeapp.com/files/2014/08/Screen-Shot-2014-08-19-at-2.02.03-PM.png – jantimon