Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

parse git diff

License

NotificationsYou must be signed in to change notification settings

yeonjuan/parse-git-diff

Repository files navigation

action statusnpm versionlicensecodecov

parse-git-diff

A parser for git diff.

Installation

npm install parse-git-diff

Demo

Seeonline demo

Usage

importparseGitDifffrom'parse-git-diff';// import// orconstparseGitDiff=require('parse-git-diff').default;// require
importparseGitDifffrom'parse-git-diff';constresult=parseGitDiff('... git diff ...');console.log(result);// {//   "type": "GitDiff",//   "files": [//     {//       "type": "AddedFile",//       "chunks": [//         {//           "type": "Chunk",//           "toFileRange": {//             "start": 1,// ...// }

Options

noPrefix (boolean)

Specifies whether the git diff command is used with the--no-prefix option. (default:false)

// git diff HEAD~3 --no-prefixconstresult=parseGitDiff(DIFF,{noPrefix:true,});

Examples

New file diff

Input

diff --git a/newfile.md b/newfile.mdnew file mode 100644index 0000000..aa39060--- /dev/null+++ b/newfile.md@@ -0,0 +1 @@+newfile

Output

{"type":"GitDiff","files": [    {"type":"AddedFile","chunks": [        {"type":"Chunk","toFileRange": {"start":1,"lines":1          },"fromFileRange": {"start":0,"lines":0          },"changes": [            {"type":"AddedLine","lineAfter":1,"content":"newfile"            }          ]        }      ],"path":"newfile.md"    }  ]}
Deleted file diff

Input

diff --git a/newfile.md b/newfile.mddeleted file mode 100644index aa39060..0000000--- a/newfile.md+++ /dev/null@@ -1 +0,0 @@-newfile

Output

{"type":"GitDiff","files": [    {"type":"DeletedFile","chunks": [        {"type":"Chunk","toFileRange": {"start":0,"lines":0          },"fromFileRange": {"start":1,"lines":1          },"changes": [            {"type":"DeletedLine","lineBefore":1,"content":"newfile"            }          ]        }      ],"path":"newfile.md"    }  ]}
Renamed file diff

Input

diff --git a/newfile.md b/rename.mdsimilarity index 100%rename from newfile.mdrename to rename.md

Output

{"type":"GitDiff","files": [    {"type":"RenamedFile","pathAfter":"rename.md","pathBefore":"newfile.md","chunks": []    }  ]}
Conflict file diff

Input

diff --cc README.mdindex 2445f65,f4b8569..0000000--- a/README.md+++ b/README.md@@@ -8,7 -8,7 +8,11 @@@  npm install parse-git-diff++<<<<<<< HEAD +## a++=======+ ## b++>>>>>>> branch-b  - [demo](https://yeonjuan.github.io/parse-git-diff/)

Output

{"type":"GitDiff","files": [    {"type":"ChangedFile","chunks": [        {"type":"CombinedChunk","fromFileRangeA": {"start":8,"lines":7          },"fromFileRangeB": {"start":8,"lines":7          },"toFileRange": {"start":8,"lines":11          },"changes": [            {"type":"UnchangedLine","lineBefore":8,"lineAfter":8,"content":" npm install parse-git-diff"            },            {"type":"UnchangedLine","lineBefore":9,"lineAfter":9,"content":""            },            {"type":"UnchangedLine","lineBefore":10,"lineAfter":10,"content":""            },            {"type":"AddedLine","lineAfter":11,"content":"+<<<<<<< HEAD"            },            {"type":"UnchangedLine","lineBefore":11,"lineAfter":12,"content":"+## a"            },            {"type":"AddedLine","lineAfter":13,"content":"+======="            },            {"type":"AddedLine","lineAfter":14,"content":" ## b"            },            {"type":"AddedLine","lineAfter":15,"content":"+>>>>>>> branch-b"            },            {"type":"UnchangedLine","lineBefore":12,"lineAfter":16,"content":""            },            {"type":"UnchangedLine","lineBefore":13,"lineAfter":17,"content":" - [demo](https://yeonjuan.github.io/parse-git-diff/)"            },            {"type":"UnchangedLine","lineBefore":14,"lineAfter":18,"content":""            },            {"type":"UnchangedLine","lineBefore":15,"lineAfter":19,"content":""            }          ]        }      ],"path":"README.md"    }  ]}
New line file diff

Input

diff --git a/rename.md b/rename.mdindex aa39060..0e05564 100644--- a/rename.md+++ b/rename.md@@ -1 +1,2 @@ newfile+newline

Output

{"type":"GitDiff","files": [    {"type":"ChangedFile","chunks": [        {"type":"Chunk","toFileRange": {"start":1,"lines":2          },"fromFileRange": {"start":1,"lines":1          },"changes": [            {"type":"UnchangedLine","lineBefore":1,"lineAfter":1,"content":"newfile"            },            {"type":"AddedLine","lineAfter":2,"content":"newline"            }          ]        }      ],"path":"rename.md"    }  ]}
Deleted line file diff

Input

diff --git a/rename.md b/rename.mdindex 0e05564..aa39060 100644--- a/rename.md+++ b/rename.md@@ -1,2 +1 @@ newfile-newline

Output

{"type":"GitDiff","files": [    {"type":"ChangedFile","chunks": [        {"type":"Chunk","toFileRange": {"start":1,"lines":1          },"fromFileRange": {"start":1,"lines":2          },"changes": [            {"type":"UnchangedLine","lineBefore":1,"lineAfter":1,"content":"newfile"            },            {"type":"DeletedLine","lineBefore":2,"content":"newline"            }          ]        }      ],"path":"rename.md"    }  ]}
diff --git a/rename.md b/rename.mdindex 0e05564..aa39060 100644--- a/rename.md+++ b/rename.md@@ -1,2 +1 @@ newfile-newline+newline\ No newline at end of filediff --git a/rename2.md b/rename2.mdindex 0e05564..aa39060 100644--- a/rename2.md+++ b/rename2.md@@ -1,2 +1 @@ newfile2-newline2+newline2\ No newline at end of file
{"type":"GitDiff","files": [    {"type":"ChangedFile","chunks": [        {"type":"Chunk","toFileRange": {"start":1,"lines":1          },"fromFileRange": {"start":1,"lines":2          },"changes": [            {"type":"UnchangedLine","lineBefore":1,"lineAfter":1,"content":"newfile"            },            {"type":"DeletedLine","lineBefore":2,"content":"newline"            },            {"type":"AddedLine","lineAfter":2,"content":"newline"            },            {"type":"MessageLine","content":"No newline at end of file"            }          ]        }      ],"path":"rename.md"    },    {"type":"ChangedFile","chunks": [        {"type":"Chunk","toFileRange": {"start":1,"lines":1          },"fromFileRange": {"start":1,"lines":2          },"changes": [            {"type":"UnchangedLine","lineBefore":1,"lineAfter":1,"content":"newfile2"            },            {"type":"DeletedLine","lineBefore":2,"content":"newline2"            },            {"type":"AddedLine","lineAfter":2,"content":"newline2"            },            {"type":"MessageLine","content":"No newline at end of file"            }          ]        }      ],"path":"rename2.md"    }  ]}

AST Format

See thetypes.ts file for all AST formats.

License

MIT

About

parse git diff

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors3

  •  
  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp