Skip to content

Instantly share code, notes, and snippets.

@AlisterH
Last active January 9, 2025 06:12
Show Gist options
  • Save AlisterH/f229f268d4513737aabcaea785359f1c to your computer and use it in GitHub Desktop.
Save AlisterH/f229f268d4513737aabcaea785359f1c to your computer and use it in GitHub Desktop.
useful git stuff
# ignore file permission changes
git config core.filemode false
http://joaquin.windmuller.ca/2011/11/16/selectively-select-changes-to-commit-with-git-or-imma-edit-your-hunk
https://web.archive.org/web/20170630184446/http://www.naleid.com/blog/2012/01/12/how-to-use-kdiff3-as-a-3-way-merge-tool-with-mercurial-git-and-tower-app/
http://blog.wuwon.id.au/2010/09/painless-merge-conflict-resolution-in.html
https://marcin-chwedczuk.github.io/use-meld-as-git-merge-diff-tool
https://martin-thoma.com/software-versioning-cheat-sheet/
https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
https://stackoverflow.com/questions/2428137/how-to-rebase-one-git-repository-onto-another-one
https://robots.thoughtbot.com/git-interactive-rebase-squash-amend-rewriting-history
https://stackoverflow.com/questions/11133290/which-version-of-the-git-file-will-be-finally-used-local-base-or-remote
https://gist.github.com/katylava/564416
@AlisterH
Copy link
Author

AlisterH commented Jan 17, 2024

By default on Windows git uses autocrlf, which makes a working folder incompatible with linux git (i.e. WSL).
To fix:

#In WSL
git rm --cached -r .
git reset --hard HEAD
git config --global core.autocrlf false
#Or
git config --local core.autocrlf false
#This is also useful
git config --local core.filemode false

Also, to reset file times to allow another diff program to work:

apt install git-restore-mtime
git restore-mtime

@AlisterH
Copy link
Author

Warning: the dos2unix command that comes packed with msysgit (as of 1.4.8) has a non-standard (IMO dangeorous and idiotic) behaviour: it does not force UNIX newlines, but instead toggles DOS <-> UNIX . To force UNIX you must use the (non standard) --d2u option.

@AlisterH
Copy link
Author

Case sensitive search on github:
/(?-i)my_var/

@AlisterH
Copy link
Author

AlisterH commented Jan 9, 2025

To cherry pick-pick commits with a merge commit (to make the history look the same):

  • create a new branch
  • cherry pick the commits
  • create a pull request
  • merge

Since the pull request is merged via the Github web interface it uses the Name configured there (or github username if not configured), which may not match the name configured locally. To make it match:
git commit --amend --reset-author
git push --force

@AlisterH
Copy link
Author

AlisterH commented Jan 9, 2025

To uncommit last commit, after pushing it:
git reset HEAD~
git push --force
Note that if it hasn't been pushed, GitHub Desktop allows you to right-click and undo a commit, and then if you wish Repository>Discharge all changes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment