问题
Trying to diff my local file with a GitHub repo before I submit a pull request so I can see what will show up, is there an accurate way of doing this? I assume GitHub's compare tool manipulates Git's diff?
回答1:
Don't do a pull :
- do a
fetch(the syntax is the same asgit pull, but it doesn't automatically merge) - do a
diffbetween your dest branch and the other branch - then do a
mergeif you want
回答2:
To compare a local working directory against a remote branch, for example origin/master:
git fetch origin master
This tells git to fetch the branch named 'master' from the remote named 'origin'.git fetchwill not affect the files in your working directory; it does not try to merge changes likegit pulldoes.git diff --summary FETCH_HEAD
When the remote branch is fetched, it can be referenced locally via FETCH_HEAD. The command above tells git to diff the working directory files against FETCHed branch's HEAD and report the results in summary format. Summary format gives an overview of the changes, usually a good way to start. If you want a bit more info, use--statinstead of--summary.git diff FETCH_HEAD -- mydir/myfile.js
If you want to see changes to a specific file, for example myfile.js, skip the--summaryoption and reference the file you want (or tree).
As noted, origin references the remote repository and master references the branch within that repo. By default, git uses the name origin for a remote, so if you do git clone <url> it will by default call that remote origin. Use git remote -v to see what origin points to.
You may have more than one remote. For example, if you "fork" a project on GitHub, you typically need a remote referencing the original project as well as your own fork. Say you create https://github.com/yourusername/someproject as a fork of https://github.com/theoriginal/someproject. By convention, you would name the remote to the original repo upstream, while your own fork would be origin. If you make changes to your fork on GitHub and want to fetch those changes locally, you would use git fetch origin master. If the upstream has made changes that you need to sync locally before making more changes, you would use git fetch upstream master.
回答3:
Per the OP's comment that part of his "problem was Windows vs. Unix LFs" this should help:
You can use the following config command to tell git-diff to ignore the difference of eol code.
git config --global core.whitespace cr-at-eol
回答4:
You can use: git diff remote/my_topic_branch my_topic_branch
Where my_topic_branch is your topic branch.
来源:https://stackoverflow.com/questions/11935633/git-diff-between-remote-and-local-repo