从零开始创建一个git diff

rxd*_*azn 14 git diff patch review-board

我正在尝试通过reviewboard创建一个补丁文件.
这将是最初的补丁.

diff -ruN --exclude=.git empty_dir working_dir > mypatch_00.patch有效,但我得到一个"所选文件似乎不是差异." 错误.

有没有办法让它使用git-diff或diff工作?谢谢

Mic*_*hař 23

如果你想为你的初始提交获得差异(也许我误解了你的问题),你可以使用它来显示它

git show COMMIT
Run Code Online (Sandbox Code Playgroud)

或者将其作为文件获取:

git format-patch -1 COMMIT
Run Code Online (Sandbox Code Playgroud)

COMMIT这个提交的修订在哪里.如果这也是您当前的提交,则根本不需要指定它.

但是,如果您的提交不是最初的,并且您希望获得历史记录的完整差异,则需要先创建空分支:

git checkout --orphan empty         # Create orphaned branch
git read-tree --empty               # Remove all files from index
git commit --allow-empty -m 'Empty' # Initial commit
Run Code Online (Sandbox Code Playgroud)

现在你可以对空分支进行完全差异:

git diff empty..master
Run Code Online (Sandbox Code Playgroud)


Mat*_*ard 20

如果你想从完整的差异到特定的提交,那么有一种比接受的答案更简单的方法:

empty_tree=$(git hash-object -t tree /dev/null) 
git diff-tree -p ${empty_tree} $MY_COMMIT [${files}...]
Run Code Online (Sandbox Code Playgroud)

${empty_tree}总是值,4b825dc642cb6eb9a060e54bf8d69288fbee4904但我不想在那里有神奇的数字.