How do you recreate the GitHub pull request diff on the commandline?

后端 未结 6 942
终归单人心
终归单人心 2021-02-18 21:20

While working on a branch that I\'ve opened a pull request on, I would like to see the exact same diff that GitHub displays on the commandline. What is the particular git diff c

相关标签:
6条回答
  • 2021-02-18 21:59

    If you don't want to do any git fetch and update a local PR branch, you simply can use cli/cli, the command-line interface for GitHub.

    The release 0.9.0 includes gh pr diff

    0 讨论(0)
  • 2021-02-18 22:01

    Not sure if there is a way to get the actual diff format closer to Github style but $ git diff master...<branch_name> seems to show the set of changes that a pull request would show (assuming it's a pull request against master). The list of changed files in a pull request seems to be equivalent to $ git diff --name-status master...<branch_name>. I guess this all assumes that your local branches are up-to-date with the remote Github branches

    0 讨论(0)
  • 2021-02-18 22:02

    git diff branchA branchB should work, no?

    More info on other perhaps useful diff notations can be found here

    0 讨论(0)
  • 2021-02-18 22:06

    Assuming that you want to check against the base branch called master:

    git diff $(git merge-base --fork-point master)
    

    This will give all the changes since the branch was made, including yet uncommitted changes!

    This command gives the same results as the one in @pic's answer, but it's a bit simpler as it doesn't require knowing the feature-branch.

    If you want only the committed changes, similar to gh pr diff command as in @VonC's answer, the following command will give the same results:

    git diff $(git merge-base --fork-point master) HEAD
    

    The git diff way approach could be more useful in some situations, since you have all the other git diff features available. For example, if you don't want the diff, but instead want to know which files were modified, you can just pass the --name-only:

    git diff --name-only $(git merge-base --fork-point master)
    

    which you can't do with gh.

    0 讨论(0)
  • 2021-02-18 22:12

    The closest thing is to diff with the common ancestor between your feature-branch and your base-branch.

    Something like:

    git diff `git merge-base feature-branch base-branch`
    
    0 讨论(0)
  • 2021-02-18 22:16

    See the Reviewing and Synchronising section in GitHub advanced training. In particular, after fetching the pull request you can view the diff prior to merging:

    $ git fetch origin refs/pull/1/head
    $ git show FETCH_HEAD
    
    0 讨论(0)
提交回复
热议问题