When working with git, I find myself doing a lot of the same requests, by creating an alias I reduced my keystrokes.
git fetch --prune git reset --hard origin/[branchname here] git clean -dfX git clean -dfx
I have this added this to my
.gitconfig file found in Users/[loginname].
[alias] refresh = !git fetch --prune && git reset --hard origin/$(git rev-parse --abbrev-ref HEAD) && git clean -dfX && git clean -dfx
Since writing this post I have been getting conflicts within the
.vs folder, so that forced me to modify the refresh script.
[alias] refresh = !git fetch --prune && git reset --hard origin/$(git rev-parse --abbrev-ref HEAD) && git clean -dfx -e '.vs/'
$(git rev-parse --abbrev-ref HEAD) works against your current branch and finds the related branch name, in theory, you have a remote branch with the same name.
the 2 git clean calls do slightly different things.
d,f,x and X are arguments on git clean, I could probably just do git clean -dfxX (not sure), but I created the script to reflect what I normally type. (update I checked you cannot do xX).
Remove untracked directories in addition to untracked files. If an untracked directory is managed by a different Git repository, it is not removed by default. Use -f option twice if you really want to remove such a directory.
If the Git configuration variable clean.requireForce is not set to false, git clean will refuse to delete files or directories unless given -f, -n or -i. Git will refuse to delete directories with .git sub directory or file unless a second -f is given.
Don’t use the standard ignore rules read from .gitignore (per directory) and $GIT_DIR/info/exclude, but do still use the ignore rules given with -e options. This allows removing all untracked files, including build products. This can be used (possibly in conjunction with git reset) to create a pristine working directory to test a clean build.
Exclude, this basically allows you to define an exclusion to ignore after applying -x.
Remove only files ignored by Git. This may be useful to rebuild everything from scratch, but keep manually created files.
if I’d left the
git clean -dfX the whole
git clean -dfx -e '.vs/' would be pointless.
If you don’t need or want the full functionality the alias can be adapted to each person on a machine suit their needs.
So now, all I need to do to activate the process is
git refresh and because I added this to my global git config it is available on any git repository on my machine.
I am expecting some convention, such as you are working against a remote called origin and your remote branch has the same name as your local, but it does save me keystrokes.