How to apply `git diff` patch without Git installed?

前端 未结 5 1636
轻奢々
轻奢々 2020-12-04 04:57

How can my client apply patch created by git diff without git installed? I have tried to use patch command but it always asks file name to patch.

相关标签:
5条回答
  • 2020-12-04 04:58
    git diff > patchfile
    

    and

    patch -p1 < patchfile
    

    work but as many people noticed in comments and other answers patch does not understand adds, deletes and renames. There is no option but git apply patchfile if you need handle file adds, deletes and renames.


    EDIT December 2015

    Latest versions of patch command (2.7, released in September 2012) support most features of the "diff --git" format, including renames and copies, permission changes, and symlink diffs (but not yet binary diffs) (release announcement).

    So provided one uses current/latest version of patch there is no need to use git to be able to apply its diff as a patch.

    0 讨论(0)
  • 2020-12-04 05:05

    try this:

    patch -p1 < patchfile
    
    0 讨论(0)
  • 2020-12-04 05:07

    I use

    patch -p1 --merge < patchfile
    

    This way, conflicts may be resolved as usual.

    0 讨论(0)
  • Try this:

    $ git apply file.diff
    
    0 讨论(0)
  • 2020-12-04 05:15

    Use

    git apply patchfile
    

    if possible.

    patch -p1 < patchfile 
    

    has potential side-effect.

    git apply also handles file adds, deletes, and renames if they're described in the git diff format, which patch won't do. Finally, git apply is an "apply all or abort all" model where either everything is applied or nothing is, whereas patch can partially apply patch files, leaving your working directory in a weird state.

    0 讨论(0)
提交回复
热议问题