This is a personal cribsheet intended for my own use. If it's useful to you, great, but it doesn't cover the subject exhaustively.
git reset -- <filename>
git checkout -- <filename>
git fetch
git checkout <branch>
git reset --hard origin/<branch>
This is a specific form of git reset --hard <commit> which resets your current branch to <commit>. origin/<branch> here refers to the HEAD commit of that branch at origin.
git revert ref_spec
Git revert undoes a single specified commit, making the changes necessary to do so at the HEAD of your current branch.
https://stackoverflow.com/questions/9537392/git-fetch-remote-branch
git checkout --track origin/remote_branch_name
git config –global –add –bool push.autoSetupRemote true
git branch -d <branch_name>
-D to force deletion in the presence of local-only changes
https://stackoverflow.com/questions/2003505/how-do-i-delete-a-git-branch-locally-and-remotely
git push -d origin <branch>
(Substitute origin for a different remote name if required).
https://stackoverflow.com/questions/7726949/remove-tracking-branches-no-longer-on-remote
git remote prune origin
git branch -vv | awk '/: gone]/{print $1}' | xargs -r git branch -d
git diff --name-only --diff-filter=U
Show unmerged files in the diff between the working tree and the index (staging area for next commit).
git has three config files. In Windows:
gitconfig in the git install folder's mingw64\etc subdirectory (probably C:\Program Files\Git\mingw64\etc)
.gitconfig in the root of the user's local profile
config in the repo's .git folder
Settings are overridden by values in more narrowly-scoped config (e.g. if the same property is set at user and repo level, the repo level takes precedence).
Inspect properties to see where their values are set:
git config --list --show-origin
or just edit them (using the configured editor) via the command line:
git config --edit --system
git config --edit --global
git config --edit --local
https://www.atlassian.com/git/tutorials/setting-up-a-repository/git-config covers a lot of possible settings.
In Git for Windows, by default the mighty vim. If that's not your cup of tea:
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
Here's a possible config setup (thanks Nathan Hoad!)
[color] ui = auto [color "branch"] current = yellow reverse local = yellow remote = green [color "diff"] meta = yellow bold frag = magenta bold old = red bold new = green bold [color "status"] added = green bold changed = yellow bold untracked = magenta bold
To set these up via the command line (e.g. for current branch as above):
git config --global color.branch.current "yellow reverse"
To disable verification:
git config --global http.sslVerify false
This is ill-advised as it opens you up to man-in-the-middle attacks.
From https://stackoverflow.com/questions/22575662/filename-too-long-in-git-for-windows.
Git for Windows compiled with msys has a limit of 260 characters for a filename – this is a limitation of msys, not Git. (Git's filename length limit is 4096 characters. Work around this by setting core.longpaths to true:
git config --system core.longpaths true
Go to your forked repo
Pull requests → New pull request. This compares your fork to its origin as if to merge it back to its originating repo.
Change the base repo to be your fork. This turns it into a branch comparison within the fork – click compare across forks to be able to see the originating repo again.
Change the head repo to the originating repo. You might need to wait for the screen to refresh if the originating repo has moved on a lot.
Create the pull request and merge it