-
-
Save AlisterH/f229f268d4513737aabcaea785359f1c to your computer and use it in GitHub Desktop.
# 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
commented
Nov 29, 2018
•
# How do I discard changes in my working copy that are not in the index?
git stash save --keep-index --include-untracked
# After that, you can drop that stash with a git stash drop command if you like
# Create a new branch and commit the current changes to it
git checkout -b new_name
git add files
git commit
git push --set-upstream origin new_name
# If you give it the wrong name, you can rename it like this:
git checkout -b new-name
# Throw away changes to a file
git checkout -- [file]
# diff two files
git diff --no-index gwc.c gwc.c_changed > segfault.patch
# to apply the diff first edit it so that it isn't talking about two files; change this:
--- a/gwc.c
+++ b/gwc.c_changed
# to this:
--- a/gwc.c
+++ b/gwc.c
# then apply:
git apply segfault.patch
How to update stale patch with GIT (also known as rerolling) https://gist.github.com/miloskroulik/59493277fa0f71c5566b
View a file of another branch
Search in Git
https://opensource.com/article/20/10/advanced-git-tips?utm_campaign=intrel
Merge two repositories (haven't tried it yet):
https://thoughts.t37.net/merging-2-different-git-repositories-without-losing-your-history-de7a06bba804
Cherry pick most recent commit: git cherry-pick master
git pull
= git fetch
+ git merge
To get new upstream branches do git fetch --all
or git pull --all
https://superuser.com/questions/229290/how-to-amend-the-last-commit-to-un-add-a-file
An alternative that doesn't require index hackery, but nonetheless preserves the old commit message:
$ git reset HEAD^
$ git add <all the files you want, excluding the one you don't want>
$ git commit -C HEAD@{1}
Alternatively if you are using git gui, you just select the "Amend last commit" option, the added file appears in the "Staged" list, click on it's icon to move it to the "Unstaged" list and commit.
And other answers might be useful...
Rename master branch:
git branch -m master crap_work
git branch -m previous_master master
git push -uf origin master and git push -u origin crap_work```
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
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.